この記事では主に、Orbit Controls プラグインを使用した Three.js (つまり、モデルの相互作用を制御する Orbit Control) に関する関連情報をサンプル コードを通じて詳しく紹介します。この記事は、誰にとっても一定の参照と学習価値があります。友達の皆さん、以下を見てみましょう。
推奨マニュアル: JavaScript 中国語リファレンスマニュアル
はじめに
この記事では主に、Orbit Controls プラグイン (Orbit Control) を使用してモデルの相互作用を制御する Three.js に関する関連コンテンツを紹介します。この効果は8章のトラックボールプラグインと比べると、トラックボールプラグインは前後に回転できるものの、上下左右の関係が分かりやすくなっています。混同しやすいため、デバッグに適していますが、軌道制御プラグイン Orbit は、混乱を招くような影響はありません。以下でその使用法について説明しましょう。
(1) まずプラグインを導入します。ファイルアドレスは公式の場合、examples/js/controls/OrbitControls.js です。
(2) 次に、関数をインスタンス化し、カメラとレンダラーの DOM を渡し、関連する設定を行います。
//用户交互插件 鼠标左键按住旋转,右键按住平移,滚轮缩放 var controls; function initControls() { controls = new THREE.OrbitControls( camera, renderer.domElement ); // 如果使用animate方法时,将此函数删除 //controls.addEventListener( 'change', render ); // 使动画循环使用时阻尼或自转 意思是否有惯性 controls.enableDamping = true; //动态阻尼系数 就是鼠标拖拽旋转灵敏度 //controls.dampingFactor = 0.25; //是否可以缩放 controls.enableZoom = true; //是否自动旋转 controls.autoRotate = true; //设置相机距离原点的最远距离 controls.minDistance = 200; //设置相机距离原点的最远距离 controls.maxDistance = 600; //是否开启右键拖拽 controls.enablePan = true; }
(3) 最後に、animate 関数内で orbit の update()
update を呼び出します。
function animate() { //更新控制器 controls.update(); render(); //更新性能插件 stats.update(); requestAnimationFrame(animate); }
は関連する効果を達成しました。
以下はすべてケースコードです:
Title <script> var renderer; function initRender() { renderer = new THREE.WebGLRenderer({antialias:true}); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); } var camera; function initCamera() { camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 10000); camera.position.set(0, 0, 400); } var scene; function initScene() { scene = new THREE.Scene(); } var light; function initLight() { scene.add(new THREE.AmbientLight(0x404040)); light = new THREE.DirectionalLight(0xffffff); light.position.set(1,1,1); scene.add(light); } function initModel() { var map = new THREE.TextureLoader().load("examples/textures/UV_Grid_Sm.jpg"); var material = new THREE.MeshLambertMaterial({map:map}); var cube = new THREE.Mesh(new THREE.BoxGeometry(100, 200, 100, 1, 1, 1), material); scene.add(cube); } //初始化性能插件 var stats; function initStats() { stats = new Stats(); document.body.appendChild(stats.dom); } //用户交互插件 鼠标左键按住旋转,右键按住平移,滚轮缩放 var controls; function initControls() { controls = new THREE.OrbitControls( camera, renderer.domElement ); // 如果使用animate方法时,将此函数删除 //controls.addEventListener( &#39;change&#39;, render ); // 使动画循环使用时阻尼或自转 意思是否有惯性 controls.enableDamping = true; //动态阻尼系数 就是鼠标拖拽旋转灵敏度 //controls.dampingFactor = 0.25; //是否可以缩放 controls.enableZoom = true; //是否自动旋转 controls.autoRotate = true; //设置相机距离原点的最远距离 controls.minDistance = 200; //设置相机距离原点的最远距离 controls.maxDistance = 600; //是否开启右键拖拽 controls.enablePan = true; } function render() { renderer.render( scene, camera ); } //窗口变动触发的函数 function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); render(); renderer.setSize( window.innerWidth, window.innerHeight ); } function animate() { //更新控制器 controls.update(); render(); //更新性能插件 stats.update(); requestAnimationFrame(animate); } function draw() { initRender(); initScene(); initCamera(); initLight(); initModel(); initControls(); initStats(); animate(); window.onresize = onWindowResize; } </script>
おすすめ関連記事:
1.three.jsを使用してプロジェクトを作成します
2.three.jsのechartsで生成したチャートの応用を詳しく解説
関連動画おすすめ:
1.JavaScriptクイックスタート_翡翠少女般若心経シリーズ
以上が軌道制御プラグイン (軌道制御) を使用してモデルの相互作用を制御する Three.js の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。