<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        Three.js中網(wǎng)格對象MESH的屬性與方法詳解

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:28:53
        文檔

        Three.js中網(wǎng)格對象MESH的屬性與方法詳解

        Three.js中網(wǎng)格對象MESH的屬性與方法詳解:前言 本文主要給大家介紹了關(guān)于Three.js網(wǎng)格對象MESH的屬性與方法,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹: 創(chuàng)建一個網(wǎng)格需要一個幾何體,以及一個或多個材質(zhì)。當(dāng)網(wǎng)格創(chuàng)建好之后,我們就可以將它添加到場景中并進行渲染。網(wǎng)格對象提
        推薦度:
        導(dǎo)讀Three.js中網(wǎng)格對象MESH的屬性與方法詳解:前言 本文主要給大家介紹了關(guān)于Three.js網(wǎng)格對象MESH的屬性與方法,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹: 創(chuàng)建一個網(wǎng)格需要一個幾何體,以及一個或多個材質(zhì)。當(dāng)網(wǎng)格創(chuàng)建好之后,我們就可以將它添加到場景中并進行渲染。網(wǎng)格對象提

        前言

        本文主要給大家介紹了關(guān)于Three.js網(wǎng)格對象MESH的屬性與方法,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹:

        創(chuàng)建一個網(wǎng)格需要一個幾何體,以及一個或多個材質(zhì)。當(dāng)網(wǎng)格創(chuàng)建好之后,我們就可以將它添加到場景中并進行渲染。網(wǎng)格對象提供了幾個屬性和方法用于改變它在場景中的位置和顯示效果。

        如下:

        還有一個屬性就是visible屬性,默認(rèn)為true,如果設(shè)置為false,THREE.Mesh將不渲染到場景中。

        mesh對象的前三個屬性position,rotation和scale有三種設(shè)置方法。

        第一種,直接設(shè)置相關(guān)坐標(biāo)軸

         cube.position.x = 5;
         cube.position.y = 6;
         cube.position.z = 7;

        第二種,一次性設(shè)置x,y和z坐標(biāo)的值

         cube.position.set(5,6,7); //效果同第一種

        第三種,因為它們都是一個THREE.Vector3對象,所以我們可以直接賦值一個新的對象給它

         cube.position = new THREE.Vector3(5,6,7); //效果同上

        為了形象的顯示這些效果,我書寫了一個案例:


        這個效果是使用dat.GUI實現(xiàn)的效果,具體效果自己將代碼下載下來測試即可:

        <!DOCTYPE html>
        <html lang="en">
        <head>
         <meta charset="UTF-8">
         <title>Title</title>
         <style type="text/css">
         html, body {
         margin: 0;
         height: 100%;
         }
        
         canvas {
         display: block;
         }
        
         </style>
        </head>
        <body onload="draw();">
        
        </body>
        <script src="build/three.js"></script>
        <script src="examples/js/controls/OrbitControls.js"></script>
        <script src="examples/js/libs/stats.min.js"></script>
        <script src="examples/js/libs/dat.gui.min.js"></script>
        <script>
         var renderer;
         function initRender() {
         renderer = new THREE.WebGLRenderer({antialias:true});
         renderer.setSize(window.innerWidth, window.innerHeight);
         //告訴渲染器需要陰影效果
         renderer.shadowMap.enabled = true;
         renderer.shadowMap.type = THREE.PCFSoftShadowMap; // 默認(rèn)的是,沒有設(shè)置的這個清晰 THREE.PCFShadowMap
         document.body.appendChild(renderer.domElement);
         }
        
         var camera;
         function initCamera() {
         camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);
         camera.position.set(0, 40, 100);
         camera.lookAt(new THREE.Vector3(0,0,0));
         }
        
         var scene;
         function initScene() {
         scene = new THREE.Scene();
         }
        
         //初始化dat.GUI簡化試驗流程
         var settings;
         function initGui() {
         //聲明一個保存需求修改的相關(guān)數(shù)據(jù)的對象
         settings = {
         positionX:0,
         positionY:5,
         positionZ:0,
         rotationX:0,
         rotationY:0,
         rotationZ:0,
         scaleX:1,
         scaleY:1,
         scaleZ:1,
         translateX:0,
         translateY:0,
         translateZ:0,
         translate:function () {
         //cube.translate(settings.translateX,settings.translateY,settings.translateZ);
         cube.translateX(settings.translateX);
         cube.translateY(settings.translateY);
         cube.translateZ(settings.translateZ);
        
         settings.positionX = cube.position.x;
         settings.positionY = cube.position.y;
         settings.positionZ = cube.position.z;
         },
         visible:true
         };
        
         //初始化gui
         var gui = new dat.GUI();
        
         var position = gui.addFolder("position");
         position.add(settings,"positionX",-30,30).listen();
         position.add(settings,"positionY",-30,30).listen();
         position.add(settings,"positionZ",-30,30).listen();
         var scale = gui.addFolder("scale");
         scale.add(settings,"scaleX",0.01,5);
         scale.add(settings,"scaleY",0.01,5);
         scale.add(settings,"scaleZ",0.01,5);
         var rotation = gui.addFolder("rotation");
         rotation.add(settings,"rotationX",-2*Math.PI,2*Math.PI);
         rotation.add(settings,"rotationY",-2*Math.PI,2*Math.PI);
         rotation.add(settings,"rotationZ",-2*Math.PI,2*Math.PI);
         var translate = gui.addFolder("translate");
         translate.add(settings,"translateX",-5,5);
         translate.add(settings,"translateY",-5,5);
         translate.add(settings,"translateZ",-5,5);
         translate.add(settings,"translate");
         gui.add(settings,"visible");
         }
        
         var light;
         function initLight() {
         scene.add(new THREE.AmbientLight(0x444444));
        
         light = new THREE.PointLight(0xffffff);
         light.position.set(15,30,10);
        
         //告訴平行光需要開啟陰影投射
         light.castShadow = true;
        
         scene.add(light);
         }
        
         var cube;
         function initModel() {
        
         //輔助工具
         var helper = new THREE.AxisHelper(10);
         scene.add(helper);
        
         //立方體
         var cubeGeometry = new THREE.CubeGeometry(10,10,10);
         var cubeMaterial = new THREE.MeshLambertMaterial({color:0x00ffff});
        
         cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
        
         //告訴立方體需要投射陰影
         cube.castShadow = true;
        
         scene.add(cube);
        
         //底部平面
         var planeGeometry = new THREE.PlaneGeometry(100,100);
         var planeMaterial = new THREE.MeshStandardMaterial({color:0xaaaaaa});
        
         var plane = new THREE.Mesh(planeGeometry, planeMaterial);
         plane.rotation.x = - 0.5 * Math.PI;
         plane.position.y = -0;
        
         //告訴底部平面需要接收陰影
         plane.receiveShadow = true;
        
         scene.add(plane);
        
         }
        
         //初始化性能插件
         var stats;
         function initStats() {
         stats = new Stats();
         document.body.appendChild(stats.dom);
         }
        
         //用戶交互插件 鼠標(biāo)左鍵按住旋轉(zhuǎn),右鍵按住平移,滾輪縮放
         var controls;
         function initControls() {
        
         controls = new THREE.OrbitControls( camera, renderer.domElement );
        
         // 如果使用animate方法時,將此函數(shù)刪除
         //controls.addEventListener( 'change', render );
         // 使動畫循環(huán)使用時阻尼或自轉(zhuǎn) 意思是否有慣性
         controls.enableDamping = true;
         //動態(tài)阻尼系數(shù) 就是鼠標(biāo)拖拽旋轉(zhuǎn)靈敏度
         //controls.dampingFactor = 0.25;
         //是否可以縮放
         controls.enableZoom = true;
         //是否自動旋轉(zhuǎn)
         controls.autoRotate = false;
         //設(shè)置相機距離原點的最遠距離
         controls.minDistance = 100;
         //設(shè)置相機距離原點的最遠距離
         controls.maxDistance = 200;
         //是否開啟右鍵拖拽
         controls.enablePan = true;
         }
        
         function render() {
         renderer.render( scene, camera );
         }
        
         //窗口變動觸發(fā)的函數(shù)
         function onWindowResize() {
        
         camera.aspect = window.innerWidth / window.innerHeight;
         camera.updateProjectionMatrix();
         renderer.setSize( window.innerWidth, window.innerHeight );
        
         }
        
         function animate() {
         //更新控制器
         render();
        
         //更新性能插件
         stats.update();
        
         //更新相關(guān)位置
         cube.position.set(settings.positionX,settings.positionY,settings.positionZ);
         cube.scale.set(settings.scaleX,settings.scaleY,settings.scaleZ);
         cube.rotation.set(settings.rotationX,settings.rotationY,settings.rotationZ);
         cube.visible = settings.visible;
        
         controls.update();
        
         requestAnimationFrame(animate);
         }
        
         function draw() {
         initGui();
         initRender();
         initScene();
         initCamera();
         initLight();
         initModel();
         initControls();
         initStats();
        
         animate();
         window.onresize = onWindowResize;
         }
        </script>
        </html>

        總結(jié)

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Three.js中網(wǎng)格對象MESH的屬性與方法詳解

        Three.js中網(wǎng)格對象MESH的屬性與方法詳解:前言 本文主要給大家介紹了關(guān)于Three.js網(wǎng)格對象MESH的屬性與方法,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹: 創(chuàng)建一個網(wǎng)格需要一個幾何體,以及一個或多個材質(zhì)。當(dāng)網(wǎng)格創(chuàng)建好之后,我們就可以將它添加到場景中并進行渲染。網(wǎng)格對象提
        推薦度:
        標(biāo)簽: 屬性 three.js Mesh
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲成在人线aⅴ免费毛片| 亚洲国产精品国自产电影| 亚洲国产精华液2020| 亚洲日韩AV一区二区三区四区| 精品亚洲福利一区二区| 久久精品无码专区免费| 亚洲午夜久久久影院伊人| 99在线免费视频| 亚洲伦另类中文字幕| 91免费人成网站在线观看18| 亚洲综合久久久久久中文字幕| 黄色毛片视频免费| 老司机亚洲精品影视www| 亚洲成A人片在线播放器| yy6080久久亚洲精品| 日本高清不卡中文字幕免费| 中文字幕亚洲免费无线观看日本| 免费jlzzjlzz在线播放视频| 特级毛片在线大全免费播放| 毛片高清视频在线看免费观看| 亚洲精品你懂的在线观看| 男女作爱在线播放免费网站| 亚洲精品成人久久久| 免费人成在线观看视频高潮 | 一级毛片直播亚洲| 久久精品无码专区免费| 亚洲色av性色在线观无码| 中文字幕无码毛片免费看| 亚洲精品乱码久久久久久下载| 97在线视频免费公开视频| 91大神亚洲影视在线| 免费观看男人免费桶女人视频| 亚洲中文久久精品无码1 | 亚洲国产成人一区二区三区| 一级做a爱过程免费视| 亚洲韩国—中文字幕| 永久免费不卡在线观看黄网站 | 亚洲午夜免费视频| 日韩在线免费看网站| 99免费精品视频| 久久久久亚洲国产|