私たちが知っているようにウェブは常に変化して進化しています。私たちが数年前にシンプルで簡単な媒体として覚えていることを覚えていること、そしてそれがそこに止まるつもりは見えないように見えません。のために ウェブサイトビルダー 、Science-Fiction-Fiction-Fiction-Fiction-Fiction-Fiction-Fiction-Fiction-Fiction-Fight Effectsの一部が今や可能になりました。
3.jsでリアルな溶融効果を作成する方法を調べるには、以下の手順に従ってください。
先に進んで3.jsライブラリをつかみ、それをあなたのサイトに含めます。 WebGlRenderer、SceneとPerspeccepeCameraをインスタンス化する必要があります。これらがインスタンス化された後は、シーンをレンダリングする必要があります。 requestAnimationFrame. 。
次に、3Dシーンにライトを追加する必要があります。この例では、周囲光と点光の2つの光が使用されます。周囲光はシーンの全体的なグローバルカラーとして機能し、点灯は距離で減少する光を放出する。これにより、シーンはいくつかのコントラストを与えます。
var ambientlight = new three.ambientlight(0xcccccccc);
SCENE.ADD(アンビエントライト);
var pointlight = new three.pointlight(0xFFFFFF、1);
Pointlight.Position.Set(10,5,0);
シーンが設定されているので、3Dモデルをロードする必要があります。モデルは、サポートされている形式(JSON、OBJ、DAEなど)を使用してロードできます。以下はDAEモデルをロードする例です。この例では、モデルに頂点の変更を実行するのに十分なポリゴンがあることが非常に重要です。
この例で使用されている鹿の頭蓋骨には3,500のポリスがあります。ポリカウントが低すぎると、頂点アニメーションは明示的で歪んでいきます。
Loader = new 3.Colladaloader();
Loader.load( 'dae / deer_skull / deer_skull.dae'、onloadcompletehandler);
バンプマップはあなたのテクスチャに低コストで深さを追加するのに最適です。バンプマップイメージを作成したら、それを以下のように素材に適用するだけで実装できます。また、モデルのスケールに合うようにバンプマップのスケールを調整する必要があります。
MATERY.BUMPMAP = 'IMG / DEER_SKULL / DEER-BUMP.JPG';
材料。バンプスケール= .008;
彼のサイトを通して、Johnnyは3.jsのためのJerome Etienneによってゲーム拡張を利用しています。これにより、頂点アニメーションを簡単にします。この拡張機能により、フレームレートでモデルの各頂点に簡単にアクセスでき、波形を使用して頂点を操作することが簡単になります。
the 頂点アニメーション拡張 EtienneのGithubを介して入手可能です。次の手順でどのように使用されているかにさらに進みます。
幾何学的形状を溶かすことはいくつかの全体的なステップを含む。まず、各点は継続的に下に押し上げられます。点が地面に達すると、「プッシュベクトル」と呼ぶものを使って外側に押し上げられています。
次に、溶融したジオメトリが完全に平らではないので、底部に沿って集まるポイントを与えます。これを達成するために、JohnnyはHoudiniのSKEEL LEEのVFXシェーダからコードを移植し、修正しました。
以下は、頂点アニメーターを使用してモデルのジオメトリをグランドに向かって継続的に押すための使用例です。
var vertexanimation = new threex.vertexanimation(ジオメトリ、関数(起点、デルタ、現在){Position.y - = MeltaMount * ModelHeight;}
これは、で定義されたレートでポイントを押し下げるでしょう。 メルタマウント 。レンダリングサイクルの頂点アニメーションで「更新」を呼び出すことを忘れないでください。
点が地面に達したとき、それは溶融効果を達成するためにそれを外側に押す必要があります。以下のコードは、X軸とZ軸内のどの方向を押して頂点を押して均一な変位を得ることです。条件付きは、モデル(地面)の最下の範囲に達した点のみを確実に押し上げます。
if(position.y< bbox.min.y){
var centroid = bbox.max.clone()。追加(bbox.min.clone())。Dividescalar(2.0);
PushVector = Position.clone()。サブ(重心);
pushvector.y = 0;
以下のコードはノイズを使用して動きのランダム性を作り出すので、溶融物は有機感を感じます。ノイズ変数は、必要な効果を得るために微調整することができます。次にノイズがプッシュベクトルに加えられます。 メルタマウント そして スプレッドマウント 溶融したプールの速度とサイズを制御する。この外側ベクトルは最終的に計算され、次に頂点自体に適用されます。
var n = NoiseApplitude * Generator.getVal((position.x)* NoisefRequency + NoiseOffset);
VAR OutwardVector = PushVector.MultiplyScalar(((MeltaMount * SpredAmount)+ N)*外向速度;
Position.Add(外向きベジカ)
これまで説明したコードはメルト効果を達成するでしょうが、それには2つのことが間違っています。まず、すべての点が同じY位置に溶けたため、プールはかなり平らに感じるでしょう。第二に、それらはすべて同じyを共有するので、あまりにも多くの点が同じ高さで積み重ねられ、それはちらつきを引き起こす可能性があります。これを回避するために、厚さは溶融速度で適用されます。
Position.y + = MeltaMount * PoolThickness
上記のコードでは、十分なポリゴンを持つモデルを溶かします。コードをzipファイルをダウンロードしてください ここに そしてあなたが好きなものでモデルを交換してください。楽しむ!
この記事は最初に登場しました ウェブデザイナー 発行265.それを購入する ここに 。
関連記事:
Web Performance Analyst Henri Helvetica. あなたのサイトのパフォーマンスを..
芸術は作成するだけではありません、それは共有についてもあります。あなたが誇りに思っている美しい仕事をしたら、他の人にも会うこと�..
私のUnreal Engine 4プロジェクトを使用して最後の停止を例として、ビデオゲームの生産のためのリ..