Three.jsおよびBabylon.js:WebGLフレームワークの比較
コアポイント
- Three.jsとBabylon.jsはどちらも強力なWebGLフレームワークであり、Web開発者にアニメーションロゴや完全にインタラクティブな3Dゲームなどの機能が豊富なWebGL作品を作成するための抽象的な基盤を提供します。
- Three.js(2009年に開始)は、Webベースのレンダラーを使用してGPU強化3Dグラフィックスとアニメーションを作成することを目的としており、ユニバーサルWebアニメーションに最適なツールになります。 Babylon.js(2013年にMicrosoftが発売)は、Webベースのゲーム開発や衝突検出やアンチエイリアスなどの機能に焦点を当てた、よりターゲットを絞ったアプローチを採用しています。
- 両方のフレームは、シーン、レンダラー、カメラ、オブジェクトアニメーションモデルに続き、同様の3Dアニメーションを作成するために使用できます。ただし、Babylon.JSは、エンジンやカスタム照明などの従来のゲームエンジンのニーズに焦点を当てることにより、3.JSと区別しています。
- 3つのbabylon.jsは両方とも高性能を提供しますが、Three.jsは初心者または小規模プロジェクトに適している、その単純さと使いやすさで知られています。より複雑なプロジェクトのために。
今日のWebブラウザは、ティムバーナーズirリーと彼のNexusソフトウェア時代以来、大きな進歩を遂げています。 WebGLのような優れたJavaScript APIのおかげで、最新のブラウザは、サードパーティのプラグインを使用して高度な2Dおよび3Dグラフィックスを完全にレンダリングできます。専用のグラフィックスプロセッサのパワーを活用することにより、WebGLを使用すると、Webページが動的なシェーディングと現実的な物理効果にアクセスできます。ご想像のとおり、このような強力なAPIは通常、欠点を引き起こします。もちろん、WebGLも例外ではなく、その欠点はその複雑さにあります。しかし、心配しないでください。WebGLを使用するときに、それをより簡単に、さらに効率的にするために設計された2つの強力なフレームワークを検討しました。
3Dフレームワークの起源
人気のあるThree.jsと新しいBabylon.jsは、アニメーションのロゴから完全にインタラクティブな3Dゲームに至るまで、Web開発者が機能豊富なWebGL作品を作成するための抽象的な基盤を提供します。 Three.jsは2009年4月に開始され、もともとActionScriptで書かれ、後にJavaScriptに翻訳されました。 WebGLが導入される前に作成されて以来、Three.jsにはモジュラーレンダリングインターフェイスのユニークな利点があり、WebGLに加えてSVGおよびHTML5のキャンバス要素で動作します。 Babylon.JSは、2013年の夏に逃亡者としてリリースされました。 Microsoft、Babylon.JS、Internet Explorer 11によって開発された11は、初めてWebGL APIを正式にサポートしています。レドモンドの研究室での起源にもかかわらず、Babylon.JS(および3.JS)は依然としてオープンソースライセンスを維持しています。
微妙なデザインの違い
3.jsとbabylon.jsはどちらも、webglアニメーションの複雑さを処理するための使いやすいライブラリを提供します。次のシーン、レンダラー、カメラ、およびオブジェクトアニメーションモデルでは、これらのフレームワークはWebGLの使用方法が非常に似ています。 HTMLでそれらを使用することは、対応するJavaScriptファイルをリンクするのと同じくらい簡単です。注:Babylon.jsにはいくつかの依存関係があり、オープンソースHand.jsも含める必要があります。
3.js:
<🎜>
babylon.js:
<🎜> <🎜>
これら2つのフレームワークの主な違いは、その目的の使用です。両方のフレームワークを使用して同じ3Dアニメーションを作成できますが、各フレームワークの作成目標を理解することが重要です。 Three.jsには、Webベースのレンダラーを使用してGPU強化3Dグラフィックとアニメーションを作成するという目標が1つしかありません。したがって、このフレームワークは、単一のアニメーションフィールドに焦点を当てることなく、Webグラフィックスに対する非常に広範なアプローチを採用しています。この柔軟なデザインにより、Three.jsは、ロゴやモデリングアプリケーションなどのユニバーサルWebアニメーションに理想的なツールになります。 Three.JSはWebGLに幅広いアニメーション機能を提供しようとしますが、Babylon.JSはよりターゲットを絞ったアプローチを取ります。もともとSilverlightゲームエンジンとして設計されたBabylon.JSは、依然としてWebベースのゲーム開発と衝突検出やアンチエイリアスなどの機能を好みます。前述のように、Babylon.jsは依然として一般的なWebグラフィックとアニメーションが完全に能力があります。
webglテクノロジーの並んでデモンストレーション
これら2つのフレームワークの類似性と相違点をさらに実証するために、高速3Dアニメーションを構築しましょう。選択したアイテムは、非常にシンプルなキューブで、ゆっくりと回転します。これら2つのサンプルプロジェクトを作成するとき、これらの2つのテクノロジーが徐々に分岐し、独自の強みを実証する方法を理解し始める必要があります。始めましょう。ほぼすべてのタイプの創造的なプロジェクトを構築する最初のステップは、3Dアニメーションを含む空白のキャンバスを含むことです。
3.js:
<div style="height:250px; width: 250px;" id="three"></div>
var div = document.getElementById('three');
babylon.js:
<div style="height:250px; width: 250px;" id="babylon"> <canvas id="babylonCanvas"></canvas> </div>
var canvas = document.getElementById('babylonCanvas');
3つのjsでは、アニメーションコンテナとして空のdivを作成する必要があります。一方、Babylon.jsは、明確に定義されたHTML5キャンバスを使用して3Dグラフィックを保存します。次に、レンダラーをロードします。レンダラーは、シーンの準備とキャンバスに描画する責任があります。
3.js:
var renderer = new THREE.WebGLRenderer(); renderer.setSize(width, height); div.appendChild(renderer.domElement);
babylon.js:
var engine = new BABYLON.Engine(canvas, true);
ここではあまりにも派手なものはありません。レンダラー(Babylon.jsの場合のエンジン)を初期化し、キャンバスに取り付けます。私たちの次のステップは、カメラとキューブを収容するためのシーンをセットアップするため、もう少し複雑になりました。
3.js:
var sceneT = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(70, width / height, 1, 1000); camera.position.z = 400;
babylon.js:
var sceneB = new BABYLON.Scene(engine); var camera = new BABYLON.ArcRotateCamera ("camera", 1, 0.8, 10, new BABYLON.Vector3(0, 0, 0), sceneB); sceneB.activeCamera.attachControl(canvas); var light = new BABYLON.DirectionalLight ("light", new BABYLON.Vector3(0, -1, 0), sceneB); light.diffuse = new BABYLON.Color3(1, 0, 0); light.specular = new BABYLON.Color3(1, 1, 1);
ここでは、ほぼ同じ方法でシーンを作成し、カメラを実装します(両方のフレームはさまざまな種類のカメラをサポートします)。そこから実際に作成されたシーンを表示します。カメラに渡されたパラメーターは、視野、アスペクト比、深さなど、カメラの視聴角のさまざまな詳細を決定します。また、Babylon.jsの方向アライトを含め、後で暗いアニメーションを見るのを避けるために、私たちのシーンに添付しました。
キャンバス、シーン、カメラを使用すると、レンダリングとアニメーションの前にキューブ自体を描くだけです。
3.js:
var cube = new THREE.CubeGeometry(100, 100, 100); var texture = THREE.ImageUtils.loadTexture('texture.gif'); texture.anisotropy = renderer.getMaxAnisotropy(); var material = new THREE.MeshBasicMaterial({ map: texture }); var mesh = new THREE.Mesh(cube, material); sceneT.add(mesh);
babylon.js:
<🎜>
最初に、指定されたサイズのキューブオブジェクトを作成し、次にキューブに描画される材料/メッシュ(テクスチャを考えてください)を作成します。任意の画像ファイルはテクスチャとして使用でき、どちらのフレームワークもBlenderなどの3Dモデリングツールからのメッシュエクスポートをサポートしています。最後のステップでは、わずかな回転をアニメーション化してから、シーンをレンダリングします。
3.js:
<🎜> <🎜>
babylon.js:
<div style="height:250px; width: 250px;" id="three"></div>
Three.jsとbabylon.jsはどちらもアニメーションまたはレンダリングループを使用してキャンバスを更新し、新しい回転グラフィックを描画します。また、3つのjsがBabylon.jsとはわずかに異なることに気付くでしょう。これは、レンダリング時にカメラを取り付けます。私たちの最終製品は、空気中を優しく回転する2つの立方体です。とてもシンプルですよね?
2つのフレームのストーリー
それだけです。 2つの非常に強力なWebGLフレームワークは同じ基盤で構築されていますが、強化されたWebグラフィックのさまざまな側面に焦点を当てています。次のシーン、レンダラー、カメラ、オブジェクトパラダイムの両方で、彼らのアプローチがアニメーションでどれほど似ているかを直接見ました。類似点にもかかわらず、Babylon.JSは、エンジンやカスタム照明などの従来のゲームエンジンのニーズに焦点を当てることにより、巧妙に区別しています。最終的に、これら2つの比較的若いフレームワークにより、Web開発者はWebGLが提供する強力な3D機会を簡単に利用できます。したがって、3D Web開発に興味のある人なら誰でも、この最先端の技術を慎重に研究する必要があります。
(これには、デモコードをダウンロードするためのzipファイルリンクが含まれている必要があります)
(Three.jsとBabylon.jsの比較に関するよくある質問をここに含める必要があります)スペースの制限のため、FAQセクション全体をここに追加することはできません。 ただし、提供された元のテキストのFAQセクションに基づいて、より簡潔で明確なバージョンに再編成して磨くことができます。
以上がThree.jsおよびBabylon.js:WebGLフレームワークの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
