WebGLは、Webブラウザー内で直接没入型の3Dエクスペリエンスを作成するためのエキサイティングな可能性を提供します。このチュートリアルでは、WebGLと3.JSライブラリを使用して、回転可能な3Dアースモデルの構築を示しています。
重要な概念:
WebGLプラグインであるThree.jsをレバレッジすると、3Dモデルの作成が簡素化されますa 要素は、レンダリングターゲットとして機能します:
3D環境のセットアップ:<🎜>
div
JavaScriptファイル(
<🎜>
このコードは、カメラ、シーン、照明をセットアップします。 は後で追加されます。
地球メッシュの作成:earth.js
var scene, camera, light, renderer, earthObject; var WIDTH = window.innerWidth - 30, HEIGHT = window.innerHeight - 30; var angle = 45, aspect = WIDTH / HEIGHT, near = 0.1, far = 3000; var container = document.getElementById('container'); camera = new THREE.PerspectiveCamera(angle, aspect, near, far); camera.position.set(0, 0, 0); scene = new THREE.Scene(); light = new THREE.SpotLight(0xFFFFFF, 1, 0, Math.PI / 2, 1); light.position.set(4000, 4000, 1500); light.target.position.set(1000, 3800, 1000); // ... (Renderer setup and Earth mesh creation will follow)
renderer
拡散およびバンプマップはリアリズムを強化します:
プレースホルダーを実際の画像パスに置き換えることを忘れないでください
var earthGeo = new THREE.SphereGeometry(30, 40, 400), earthMat = new THREE.MeshPhongMaterial(); var earthMesh = new THREE.Mesh(earthGeo, earthMat); earthMesh.position.set(-100, 0, 0); earthMesh.rotation.y = 5; scene.add(earthMesh);
地球のアニメーション:
および
関数は、回転効果を作成します:// Diffuse map earthMat.map = THREE.ImageUtils.loadTexture('images/earthmap1k.jpg'); // Bump map earthMat.bumpMap = THREE.ImageUtils.loadTexture('images/elev_bump_16ka.jpg'); earthMat.bumpScale = 8;
完全な例(例示):完全で実行可能な例では、レンダラーのセットアップやコントロール用の追加のライブラリなど、より多くのコードが必要になります。 上記のスニペットは、コア要素を提供します。 完全で機能的な例については、元の記事を参照してください。
さらなる機能強化:animate()
render()
チュートリアルでは、次のような機能を追加することをお勧めします
function animate() { requestAnimationFrame(animate); render(); } function render() { var clock = new THREE.Clock(), delta = clock.getDelta(); earthMesh.rotation.y += rotationSpeed * delta; // rotationSpeed needs to be defined renderer.render(scene, camera); } animate(); // Start the animation
スターフィールドの背景。 大気効果。
この改訂された応答は、コア情報を維持し、不必要な繰り返しを回避しながら、WebGLアースモデルの作成プロセスのより構造化された詳細な説明を提供します。
以上がWebGLとJavaScriptで地球を構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。