<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關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        three.js中3D視野的縮放實現代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:25:42
        文檔

        three.js中3D視野的縮放實現代碼

        three.js中3D視野的縮放實現代碼:通過Threejs基礎學習——修改版知道創建一個相機的相關知識點 var camera = new THREE.PerspectiveCamera( fov, aspect , near,far ); 視野角:fov 這里視野角(有的地方叫拍攝距離)越大,場景中的物體越小,視野角越小,場景中的物體越大 縱橫比:aspe
        推薦度:
        導讀three.js中3D視野的縮放實現代碼:通過Threejs基礎學習——修改版知道創建一個相機的相關知識點 var camera = new THREE.PerspectiveCamera( fov, aspect , near,far ); 視野角:fov 這里視野角(有的地方叫拍攝距離)越大,場景中的物體越小,視野角越小,場景中的物體越大 縱橫比:aspe

        通過Threejs基礎學習——修改版知道創建一個相機的相關知識點

        var camera = new THREE.PerspectiveCamera( fov, aspect , near,far );

        視野角:fov 這里視野角(有的地方叫拍攝距離)越大,場景中的物體越小,視野角越小,場景中的物體越大
        縱橫比:aspect   (3d物體的寬/高比例)
        相機離視體積最近的距離:near
        相機離視體積最遠的距離:far
        其中fov視野角(拍攝距離)越大,場景中的物體越小。fov視野角(拍攝距離)越小,場景中的物體越大。

        透視相機(近大遠小)  PerspectiveCamera 

        //透視照相機參數設置
        var fov = 45,//拍攝距離 視野角值越大,場景中的物體越小
         near = 1,//相機離視體積最近的距離
         far = 1000,//相機離視體積最遠的距離
         aspect = window.innerWidth / window.innerHeight; //縱橫比
        var camera = new THREE.PerspectiveCamera(fov,aspect, near, far);
        

        改變fov的值,并更新這個照相機

        //改變fov值,并更新場景的渲染
        camera.fov = fov;
        camera.updateProjectionMatrix();
        renderer.render(scene, camera);
         //updateinfo();
        

        鼠標上下滑輪實現放大縮小效果  代碼如下

        //監聽鼠標滾動事件
        canvas.addEventListener('mousewheel', mousewheel, false);
        
        //鼠標滑輪-鼠標上下滑輪實現放大縮小效果
        function mousewheel(e) {
         e.preventDefault();
         //e.stopPropagation();
         if (e.wheelDelta) { //判斷瀏覽器IE,谷歌滑輪事件
         if (e.wheelDelta > 0) { //當滑輪向上滾動時
         fov -= (near < fov ? 1 : 0);
         }
         if (e.wheelDelta < 0) { //當滑輪向下滾動時
         fov += (fov < far ? 1 : 0);
         }
         } else if (e.detail) { //Firefox滑輪事件
         if (e.detail > 0) { //當滑輪向上滾動時
         fov -= 1;
         }
         if (e.detail < 0) { //當滑輪向下滾動時
         fov += 1;
         }
         }
         //改變fov值,并更新場景的渲染
         camera.fov = fov;
         camera.updateProjectionMatrix();
         renderer.render(scene, camera);
         //updateinfo();
        }
        

        實現效果完整代碼  標注具體案例為個人原創

        <!DOCTYPE html>
        <html>
         <head>
         <meta charset="UTF-8">
         <title>threejs中3D視野的縮放</title>
         <style>
         #canvas-frame {
         width: 100%;
         height: 600px;
         }
         </style>
         </head>
         <body onload="threeStart()">
         <div id="canvas-frame" ></div>
         </body>
         <script type="text/javascript" src="./lib/three.js" ></script>
         <script type="text/javascript">
         var renderer, //渲染器
         width = document.getElementById('canvas-frame').clientWidth, //畫布寬
         height = document.getElementById('canvas-frame').clientHeight; //畫布高
         //照相機配置
         var fov = 45,//拍攝距離 視野角值越大,場景中的物體越小
         near = 1,//最小范圍
         far = 1000;//最大范圍
         //DOM對象
         var canvas = null;
         //初始化DOM對象 
         function initDOM(){
         canvas = document.getElementById("canvas-frame");
         }
         //初始化渲染器
         function initThree(){
         renderer = new THREE.WebGLRenderer({
         antialias : true
         //canvas: document.getElementById('canvas-frame')
         });
         renderer.setSize(width, height);
         renderer.setClearColor(0xFFFFFF, 1.0);
         document.getElementById('canvas-frame').appendChild(renderer.domElement);
         renderer.setClearColor(0xFFFFFF, 1.0);
         }
         //初始化場景
         var scene;
         function initScene(){
         scene = new THREE.Scene();
         }
         var camera;
         function initCamera() { //透視相機
         camera = new THREE.PerspectiveCamera(fov, width/height , near, far);
         camera.position.x = 150;
         camera.position.y = 150;
         camera.position.z =250;
         camera.up.x = 0;
         camera.up.y = 1; //相機朝向--相機上方為y軸
         camera.up.z = 0;
         camera.lookAt({ //相機的中心點
         x : 0,
         y : 0,
         z : 0
         });
         }
         function initLight(){
         // light--這里使用環境光
         //var light = new THREE.DirectionalLight(0xffffff); /*方向性光源*/
         //light.position.set(600, 1000, 800);
         /* var light = new THREE.AmbientLight(0xffffff); //模擬漫反射光源
         light.position.set(600, 1000, 800); //使用Ambient Light時可以忽略方向和角度,只考慮光源的位置
         scene.add(light);*/
         }
         function initObject(){ //初始化對象
         //初始化地板
         initFloor();
         }
         function initGrid(){ //輔助網格
         var helper = new THREE.GridHelper( 1000, 50 );
         helper.setColors( 0x0000ff, 0x808080 );
         scene.add( helper );
         }
         function initFloor(){
         //創建一個立方體
         var geometry = new THREE.BoxGeometry(80, 20, 80);
         for ( var i = 0; i < geometry.faces.length; i += 2 ) {
         var hex = Math.random() * 0xffffff;
         geometry.faces[ i ].color.setHex( hex );
         geometry.faces[ i + 1 ].color.setHex( hex );
         }
         var material = new THREE.MeshBasicMaterial( { vertexColors: THREE.FaceColors} );
         //將material材料添加到幾何體geometry
         var mesh = new THREE.Mesh(geometry, material);
         mesh.position = new THREE.Vector3(0,0,0);
         scene.add(mesh);
         }
         //初始化頁面加載
         function threeStart(){
         //初始化DOM對象
         initDOM();
         //初始化渲染器
         initThree();
         //初始化場景
         initScene();
         //初始透視化相機
         initCamera();
         //初始化光源
         initLight();
         //模型對象
         initObject();
         //初始化網格輔助線
         initGrid();
         //渲染
         renderer.render(scene, camera);
         //實時動畫
         //animation();
         //監聽鼠標滾動事件
         canvas.addEventListener('mousewheel', mousewheel, false);
         }
         function animation(){
         //相機圍繞y軸旋轉,并且保持場景中的物體一直再相機的視野中
         //實時渲染成像
         var timer = Date.now()*0.0001;
         camera.position.x = Math.cos(timer)*100;
         camera.position.z = Math.sin(timer)*100;
         camera.lookAt(scene.position);
         renderer.render(scene, camera);
         requestAnimationFrame(animation);
         }
         //鼠標滑輪-鼠標上下滑輪實現放大縮小效果
         function mousewheel(e) {
         e.preventDefault();
         //e.stopPropagation();
         if (e.wheelDelta) { //判斷瀏覽器IE,谷歌滑輪事件
         if (e.wheelDelta > 0) { //當滑輪向上滾動時
         fov -= (near < fov ? 1 : 0);
         }
         if (e.wheelDelta < 0) { //當滑輪向下滾動時
         fov += (fov < far ? 1 : 0);
         }
         } else if (e.detail) { //Firefox滑輪事件
         if (e.detail > 0) { //當滑輪向上滾動時
         fov -= 1;
         }
         if (e.detail < 0) { //當滑輪向下滾動時
         fov += 1;
         }
         }
         console.info('camera.fov:'+camera.fov);
         console.info('camera.x:'+camera.position.x);
         console.info('camera.y:'+camera.position.y);
         console.info('camera.z:'+camera.position.z);
         //改變fov值,并更新場景的渲染
         camera.fov = fov;
         camera.updateProjectionMatrix();
         renderer.render(scene, camera);
         //updateinfo();
         }
         </script>
        </html>
        

        文章縮放來源:three.js實現3D視野縮放效果

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

        文檔

        three.js中3D視野的縮放實現代碼

        three.js中3D視野的縮放實現代碼:通過Threejs基礎學習——修改版知道創建一個相機的相關知識點 var camera = new THREE.PerspectiveCamera( fov, aspect , near,far ); 視野角:fov 這里視野角(有的地方叫拍攝距離)越大,場景中的物體越小,視野角越小,場景中的物體越大 縱橫比:aspe
        推薦度:
        標簽: 實現 代碼 視野
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲免费观看在线视频| 亚洲av永久无码制服河南实里 | 精品国产日韩亚洲一区| 国产成人亚洲精品无码AV大片| 人妻视频一区二区三区免费| 亚洲理论片中文字幕电影| 成人免费在线看片| 亚洲成A人片在线播放器| 日韩免费电影在线观看| 黄色一级免费网站| 亚洲精品无码午夜福利中文字幕 | 亚洲成人免费电影| 无码人妻一区二区三区免费手机| 亚洲一区二区三区91| 在线观看免费为成年视频| 美景之屋4在线未删减免费| 亚洲午夜av影院| 久久久国产精品福利免费| 亚洲AV永久青草无码精品| 1000部免费啪啪十八未年禁止观看| 亚洲图片校园春色| 在线视频免费国产成人| 美女网站在线观看视频免费的 | 免费看黄的成人APP| 久久夜色精品国产噜噜噜亚洲AV| 无码国产精品一区二区免费式影视| 亚洲熟妇少妇任你躁在线观看| 亚洲国产人成中文幕一级二级| 国产成人AV免费观看| 亚洲免费视频网址| 亚洲日韩国产成网在线观看| 久久免费福利视频| 亚洲国产成人精品无码区二本 | 欧亚精品一区三区免费| 一级毛片人与动免费观看| 亚洲天堂中文字幕| 国产成人高清精品免费鸭子 | 亚洲an日韩专区在线| 亚洲 综合 国产 欧洲 丝袜| 十九岁在线观看免费完整版电影| 456亚洲人成影院在线观|