3D 表現により、平面を通してさまざまな角度から実際のオブジェクトの表示効果を見ることができることがわかっています。
コンピューターの世界では、3D 世界は点で構成されており、2 つの点が直線を形成し、直線上にない 3 つの点が三角形の面を形成し、無数の三角形の面がさまざまな形のオブジェクトを形成します。次の写真です。
Three のモデル パーサーの原理は、モデルの頂点を配列に格納し、次に、three の face 関数を使用して、固定小数点配列内の 3 つまたは 4 つの頂点のインデックスを取得して形成することです。空間面。これを繰り返すことでモデルが完成します。
したがって、オブジェクトが複雑になればなるほど、より多くのメッシュのスプライシングが必要になります。 CSS には座標に基づいて空間平面を確立する機能はありません。
(余談ですが、実はCSSにはclip-pathという座標に関係する属性があります。この属性の特性によりCSS3に一定のモデリング機能が与えられます。実装方法についてはこちらの記事を参照してください。 純粋なクリップで作成した3Dパスモデルレンダラ)
CSS3 を使用して 3D パノラマ
を実現します。前回の記事では、Web3D のいくつかの表現を紹介しました。ここでは、CSS3 を使用して 3D パノラマを実現する方法に焦点を当てます。次に、パノラマを実現するための Three のソリューションを検討します。WebGL の敷居と学習コストはまだ比較的高く、急速な開発には適していません。 Creation Festival の CSS3D Panorama については、このテクノロジーを調査した記事がいくつかありましたが、具体的な実装方法について深く掘り下げた記事はありませんでした。
実装方法を明確に理解するには、CSS3の変換とパースペクティブについて一定の理解が必要です。
原理については詳しく説明しません。CSS3D の概要を理解するには、まずこの記事を読んでください。
CSS 3D で遊ぶ - 原則
CSS パノラマは、列または立方体を作成し、マッピングを使用することで実現できます。球体は機能するのか?と疑問に思う人もいるかもしれません。実際には、球体モデルは無数の小さな平面をつなぎ合わせて構成されており、CSS には平面を歪ませる性質がありません。前述の Clip-3d を使用して球モデルを構築することはできますが、テクスチャの問題は解決できません。
Sky Box
3D パノラマを作成したことがある、または 3D パノラマについて学んだ多くの同僚がこの概念を知っていると思います。実際、Skybox は立方体であり、6 つの側面に異なる絵を貼り付けることで、端がシームレスに収まり、遠近感がボックスの内側に拡張されます。私たちは巨大な立方体の箱の中に立っていると想像でき、視点を動かすことでさまざまな景色が見えます。
1. テクスチャ
カットヘッドが指すエッジは、シームレスにフィットする必要があるエッジを表します。
上の図からわかるように、互いに適合する 2 つのサーフェス上の画像をシームレスに接合できる限り、各サーフェスで特定の回転変換を実行することで、スカイ ボックスを作成できます。
それでは、問題は、このような写真をどうやって撮るかということです。これには、pano2vr、max などの専門的なソフトウェアが必要です。実際、これらのプロフェッショナル ツールを使用して作成されたパノラマには、画質とステッチに対する非常に高い要件があり、CSS3 の変更だけに依存するだけでは良いエクスペリエンスを得ることができません。
しかし、私たちが今日議論しているのは、特定の運用活動のために H5 によって作成されたパノラマです。このパノラマは必ずしも実際に存在するとは限らず、実際のシーンとの間に一定の比率のギャップがある可能性があります。例えば、星空や海の底。このような人為的にフィット感を変えることができるパノラマの作成には、既存の高解像度画像を PS を通じて 6 面パノラマに変換することができます。
記事を投稿する 写真からスカイボックスを作成する
実際、主なアイデアは、
大きな画像上で 6 つの顔の選択範囲の輪郭を描く>
大きな画像内で顔の隣接する顔を選択し、必要なボックスに回転させることです。特定の面にぴったりとフィットさせます>
最も合理的な6面マップを取得した後、新しいエッジが作成されるかどうかを観察し、マスクなどのツールを使用して自然にブレンドします。
2. テクスチャの構築が完了したら、立方体を作成できます。まず、作成した 6 つの面を切り出し、マークされた位置に前、後ろ、左、右... と名前を付けます。
.sence { -webkit-perspective: 1000px; } .cube { width: 500px; height: 500px; margin: 100px auto; transform-style: preserve-3d; } .cube img { width: 130px; height: 130px; position: absolute; } .cube img:nth-child(1) { } .cube img:nth-child(2) { transform: rotateY(180deg); } .cube img:nth-child(3) { transform: rotateY(90deg); } .cube img:nth-child(4) { transform: rotateY(-90deg); } .cube img:nth-child(5) { transform: rotateX(90deg); } .cube img:nth-child(6) { transform: rotateX(-90deg); }rree
6面を用意してテクスチャを読み込みます。回転すると、各面が対応する位置に回転します。たとえば、左側の面は、最初にこちらを向いていた画像を Y 軸を中心に反時計回りに 90 度回転させることによって得られます。 (Y 軸の反時計回りの回転は正の数であることに注意してください)
このとき、下の写真のような効果が得られます。
ただし、各面の回転中心はその中心にあるので、まだ立方体を形成できません。したがって、各サーフェスに特定の変位を持たせる必要があります。
誰もが理解できるように座標系図を投稿してください。
次に、まず前面をあるべき場所に移動します。パノラマのレンズは立方体の内側にあるため、画像を後方に移動する必要があると想像できます。移動距離は明らかに立方体の辺の長さの半分です。ここでは65pxです。以下の結果を取得します。
<div class="sence"> <div class="cube"> <img src="/static/imghwm/default1.png" data-src="img/skybox/front.jpg" class="lazy" alt="" /> <img src="/static/imghwm/default1.png" data-src="img/skybox/back.jpg" class="lazy" alt="" /> <img src="/static/imghwm/default1.png" data-src="img/skybox/left.jpg" class="lazy" alt="" /> <img src="/static/imghwm/default1.png" data-src="img/skybox/right.jpg" class="lazy" alt="" /> <img src="/static/imghwm/default1.png" data-src="img/skybox/top.jpg" class="lazy" alt="" /> <img src="/static/imghwm/default1.png" data-src="img/skybox/bottom.jpg" class="lazy" alt="" /> </div> </div>
こうやって見ると、後ろの変位がtranslateZ(65px)、左の変位がtranslateX(-65px)、上がtranslateY(-65px)ということになるでしょうか?しかし、結果は私たちが望むものではありません。
上記の空間座標系の地図をもう一度見てみると、平面が回転すると、それに対応する 3 つの軸の位置も変化することがわかります。たとえば、画像が Y を中心に回転すると、Z 軸は画面の水平方向を指します。 X を中心に回転すると、Z 軸は垂直方向を指します。したがって、実際には、ベニアを正しい位置に移動するには、translateZ(-width/2px) を要求するだけでよいことが簡単にわかります。
皆さんに分かりやすくするために、ここではより大きな視点を設定しました。パノラマ効果を得るには、ズームインしてボックス内に入れるだけです。
次に、ジェスチャをバインドすると、ジェスチャを動かすことができます。
コードの一部:
.cube img:nth-child(1) { transform: translateZ(-65px); }
Math.atan2(y,x) メソッド: x 軸から点 (x,y) までの角度を取得します。左の空間系を理解するのは難しいですが、空間の Z 軸を Y 軸とする平面の X 軸の正の方向の周りの回転角度が立方体の回転角度であると想像できます。空間の Y 軸。
円柱
円柱のパノラマはそれほど複雑ではありません。円筒形の作成方法については、こちらの記事「CSS3 3D 変換シリーズ チュートリアル - 3D カルーセル」を参照してください。この基礎を使用して、円筒形のパノラマをすばやく構築する関数を作成できます。
viewer.on('touchstart', function(e) { x1 = e.targetTouches[0].pageX; - $(this).offset().left; y1 = e.targetTouches[0].pageY; - $(this).offset().top; }); viewer.on('touchmove',function(){ var dist_x = x2 - x1, dist_y = y2 - y1, deg_x = Math.atan2(dist_y, perspective) / Math.PI * 180, deg_y = -Math.atan2(dist_x, perspective) / Math.PI * 180, i, c_x_deg += deg_x; c_y_deg += deg_y; cube.css('transform', 'rotateX(' + deg_x + 'deg) rotateY(' + deg_y + 'deg)'); })
<style> body { height: 100%; overflow: hidden; } .scene { width: 100%; height: 1170px; transform: translateX(-50%) translateY(-50%); top: 50%; left: 50%; position: absolute; } .cube { transform-style: preserve-3d; height: 100%; width: 100%; margin: 0px auto; } .cube_bg { transform-style: preserve-3d; height: 100%; width: 128px; margin: 0px auto; } .cube_bg div { height: 100%; /* 这里为圆柱形的每个面都设定了同样的背景图 那么在建造柱形时不再需要手动切图 */ background-image: url("img/zao/zao.png"); background-repeat: no-repeat; position: absolute; top: 0; } </style> <body> <div class="scene"> <div class="cube"> <div class="cube_bg"> <!-- 这里是柱形全景背景贴图 --> </div> <div class="cube_item"> <!-- 这里是柱形全景中的小元件 --> </div> </div> </div> </body>ここでは、パースペクティブを -lenZ-5 に設定する必要がある理由を説明します
図を見てください。上の lenZ は、translateZ 値であり、負の値です。
遠近感はレンズからスクリーンまでの距離です。このときレンズは円柱の中にあるため、円柱の後ろの画像は見えません。
遠近感の値が -lenZ の場合、一定の確率でレンズを遮るのを避けるために、円柱の背面をレンズと同じ平面上に置くことができ、レンズに近づけてズームインできます。 -lenZ-5 に設定されます。このとき、レンズが確実に円筒内に収まると同時に、円筒の全景をより広い角度から観察することができます。

セルフクロージングのlandxmlareTagstatemtatemsem onedinedingsingaseparateclosingtag、SimmarifiedMarkupStructureanddendingCodingInefciency.1)areEssentionalinforementswithoutcontent、2)

強力な機能と優れたユーザーエクスペリエンスを備えたWebサイトを構築するには、HTMLだけでは十分ではありません。次のテクノロジーも必要です。JavaScriptは、Webページに動的とインタラクティブ性を与え、リアルタイムの変更がDOMを操作することで達成されます。 CSSは、美学とユーザーエクスペリエンスを向上させるために、Webページのスタイルとレイアウトを担当しています。 React、Vue.JS、Angularなどの最新のフレームワークとライブラリは、開発効率とコード組織構造を改善します。

ブール属性は、値なしでアクティブ化されるHTMLの特別な属性です。 1.ブール属性は、無効化された入力ボックスを無効にするなど、存在するかどうかによって、要素の動作を制御します。 2.彼らの実用的な原則は、ブラウザが異なっているときに属性の存在に応じて要素の動作を変更することです。 3.基本的な使用法は、属性を直接追加することであり、高度な使用法はJavaScriptを介して動的に制御できます。 4.一般的な間違いは、値を設定する必要があると誤って考えており、正しい執筆方法は簡潔にする必要があります。 5.ベストプラクティスは、コードを簡潔に保ち、ブールのプロパティを合理的に使用して、Webページのパフォーマンスとユーザーエクスペリエンスを最適化することです。

HTMLコードは、オンラインバリデーター、統合ツール、自動化されたプロセスを使用するとクリーンになります。 1)w3cmarkupvalidationserviceを使用して、HTMLコードをオンラインで確認します。 2)リアルタイム検証のためにVisualStudiocodeにhtmlhint拡張機能をインストールして構成します。 3)HTMLTIDYを使用して、建設プロセスでHTMLファイルを自動的に検証およびクリーニングします。

HTML、CSS、およびJavaScriptは、最新のWebページを構築するためのコアテクノロジーです。1。HTMLはWebページ構造を定義します。2。CSSはWebページの外観に責任があります。

HTMLの機能は、Webページの構造とコンテンツを定義することであり、その目的は、情報を表示するための標準化された方法を提供することです。 1)HTMLは、タイトルやパラグラフなどのタグや属性を使用して、Webページのさまざまな部分を整理しています。 2)コンテンツとパフォーマンスの分離をサポートし、メンテナンス効率を向上させます。 3)HTMLは拡張可能であり、カスタムタグがSEOを強化できるようにします。

HTMLの将来の傾向はセマンティクスとWebコンポーネントであり、CSSの将来の傾向はCSS-in-JSとCSShoudiniであり、JavaScriptの将来の傾向はWebAssemblyとServerLessです。 1。HTMLセマンティクスはアクセシビリティとSEO効果を改善し、Webコンポーネントは開発効率を向上させますが、ブラウザの互換性に注意を払う必要があります。 2。CSS-in-JSは、スタイル管理の柔軟性を高めますが、ファイルサイズを増やす可能性があります。 CSShoudiniは、CSSレンダリングの直接操作を可能にします。 3. Webassemblyブラウザーアプリケーションのパフォーマンスを最適化しますが、急な学習曲線があり、サーバーレスは開発を簡素化しますが、コールドスタートの問題の最適化が必要です。

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造を定義し、2。CSSはWebページスタイルを制御し、3。JavaScriptは動的な動作を追加します。一緒に、彼らは最新のウェブサイトのフレームワーク、美学、および相互作用を構築します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

メモ帳++7.3.1
使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 中国語版
中国語版、とても使いやすい

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ホットトピック









