<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中文文檔學習之創建場景

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

        three.js中文文檔學習之創建場景

        three.js中文文檔學習之創建場景:什么是Three.js? 如果你正在讀這篇文章,你可能對Three.js有一定的了解,那我們來簡單地介紹下Three.js是什么. Three.js是一個庫,使得WebGL的3D效果在瀏覽器中運用很容易。而在原始的WebGL中一個簡單的立方體會變成數百Javascript和著色器代碼的
        推薦度:
        導讀three.js中文文檔學習之創建場景:什么是Three.js? 如果你正在讀這篇文章,你可能對Three.js有一定的了解,那我們來簡單地介紹下Three.js是什么. Three.js是一個庫,使得WebGL的3D效果在瀏覽器中運用很容易。而在原始的WebGL中一個簡單的立方體會變成數百Javascript和著色器代碼的

        什么是Three.js?

        如果你正在讀這篇文章,你可能對Three.js有一定的了解,那我們來簡單地介紹下Three.js是什么.
        Three.js是一個庫,使得WebGL的3D效果在瀏覽器中運用很容易。而在原始的WebGL中一個簡單的立方體會變成數百Javascript和著色器代碼的行,而一個Three.js只需要一點點代碼.

        本節目標是為 three.js 做簡介。我們從使用旋轉立方體來搭建場景開始。如果遇到困難需要幫助,頁面底部有可參考的源碼。

        一個場景至少需要的三種類型組件

      1. 相機/決定哪些東西將在屏幕上渲染
      2. 光源/他們會對材質如何顯示,以及生成陰影時材質如何使用產生影響
      3. 物體/他們是在相機透視圖里主要的渲染隊形:方塊、球體等
      4. 開始前

        在計算機中保存如下 HTML 代碼,并在 js 目錄下包含 three.js,然后在瀏覽器中打開

        <html>
         <head>
         <meta charset=utf-8>
         <title>My first three.js app</title>
         <style>
         body { margin: 0; }
         canvas { width: 100%; height: 100% }
         </style>
         </head>
         <body>
         <script src="js/three.js"></script>
         <script>
         // Our Javascript will go here.
         </script>
         </body>
        </html>

        接下來的代碼都會下載 script 標簽中

        創建示例場景

        為了利用three.js來進行展示,我們需要三種元素:場景,攝像機,渲染器,以便來渲染攝像機中的場景。

        var scene = new THREE.Scene();
        var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
        
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize( window.innerWidth, window.innerHeight );
        document.body.appendChild( renderer.domElement );

        讓我們花點時間來解釋發生了什么。我們現在創建了場景,攝像機和渲染器。

        在 three.js 中有幾種攝像機。我們暫時用的是 PerspectiveCamera (透視攝像機)

        它的第一個屬性是視圖角(FOV),它 是能看見的視圖范圍,其值表示角度大小。

        第二個屬性是寬高比。大多數情況你想要使用被高除過之后的寬度,不然會發生像在寬屏電視上放舊電影的情況 —— 圖像看起來被壓扁了。

        后面兩個屬性是近景面和遠景面。只會渲染這兩個面之間的區域。目前你不必關心這些,使用這些參數能提高性能。

        接下來談談渲染器。這便是神奇之處。除了我們這里用的 WebGLRenderer 外, three.js 還提供一些渲染器用在不支持 WebGL 的老舊瀏覽器上。

        除了創建渲染器實例,我們也需要設置應用渲染的尺寸。推薦使用填充整個應用的寬高 —— 本例中是瀏覽器窗口的寬高。對于性能優先的應用,你能使用 setSize 來設置更小的值,比如 window.innerHeight/2, window.innerWidth/2,會渲染一半的尺寸。

        如果你想低分辨率地渲染整個尺寸,你可以設置 setSize 的第三個參數 — uodateStyle 為 <font color="#FF1493">false</font> ,如果 canvas 元素寬高都為 100%,則會以 1/2 分辨率渲染應用。

        再爾,我們需要在 HTML 中添加被渲染的元素。渲染器通過 canvas 來給我們展示場景。

        “都很好,但之前說的立方體呢” 讓我們現在添加。

        var geometry = new THREE.BoxGeometry( 1, 1, 1 );
        var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
        var cube = new THREE.Mesh( geometry, material );
        scene.add( cube );
        
        camera.position.z = 5;

        我們需要 BoxGeometry來創建立方體。這個對象包含立方體所有的點(頂點)和填充(面)。我們以后會討論。

        除了幾何體外,我們還需要材質為其上色。three.js 提供了一些材質,但我們暫且使用 MeshBasicMaterial。所有材質接受并應用一個包含所有屬性的對象。為簡單起見,我們僅僅提供一個顏色屬性: 綠色 —— <font color="#00ff00">0x00ff00</font> 。和 CSS 和 PS 里的一樣采用十六進制的顏色。

        我們需要的第三個要素是 Mesh。 mesh 是一個將材質應用到幾何體上的對象,然后我們能將其放入場景中,并自由移動。

        當我們調用 scene.add() ,我們添加的會默認顯示在坐標(0,0,0,)處。這會導致攝像機和立方體內部重疊。為了避免這點,我們簡單地把攝像機往外移一點。

        渲染場景

        如果你在 HTML 文件中復制了如上代碼,屏幕不會顯示東西。因為我們還沒渲染場景。所以我們需要調用渲染器或者動畫循環。

        function animate() {
         requestAnimationFrame( animate );
         renderer.render( scene, camera );
        }
        animate();

        這會創建一個讓渲染器每秒繪制一幀的循環。如果你對網頁游戲編程不了解,你可能會說“為什么不 寫setInterval 函數呢?”事實上,我們可以,但是 requestAnimationFrame 好處更多。最重要的好處是當瀏覽器切換到另一個標簽頁時,requestAnimationFrame 會暫停渲染,因此不會浪費寶貴的處理能力和電池壽命。

        讓立方體動起來

        如果你插入了我們剛剛創建的代碼,你應該會看見一個綠色的立方體。讓它旋轉起來不至于單調。

        在animate 函數中的 renderer.render 上添加如下代碼:

        cube.rotation.x += 0.01;
        cube.rotation.y += 0.01;

        它會按幀運行(每秒60幀),并賦予立方體優雅的動畫。基本上,應用運行時,你想移動或改變任何元素,必須通過動畫循環。你當然在此處能調用其他函數,以免animate函數上百行代碼結尾。

        結果

        恭喜!你現在創建好了第一個 three.js 應用。很簡單,但總得突破。

        完整代碼參考如下。琢磨一下并深刻理解其工作機理

        <html>
         <head>
         <title>My first three.js app</title>
         <style>
         body { margin: 0; }
         canvas { width: 100%; height: 100% }
         </style>
         </head>
         <body>
         <script src="js/three.js"></script>
         <script>
         var scene = new THREE.Scene();
         var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
        
         var renderer = new THREE.WebGLRenderer();
         renderer.setSize( window.innerWidth, window.innerHeight );
         document.body.appendChild( renderer.domElement );
        
         var geometry = new THREE.BoxGeometry( 1, 1, 1 );
         var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
         var cube = new THREE.Mesh( geometry, material );
         scene.add( cube );
        
         camera.position.z = 5;
        
         var animate = function () {
         requestAnimationFrame( animate );
        
         cube.rotation.x += 0.1;
         cube.rotation.y += 0.1;
        
         renderer.render(scene, camera);
         };
        
         animate();
         </script>
         </body>
        </html>

        總結

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

        文檔

        three.js中文文檔學習之創建場景

        three.js中文文檔學習之創建場景:什么是Three.js? 如果你正在讀這篇文章,你可能對Three.js有一定的了解,那我們來簡單地介紹下Three.js是什么. Three.js是一個庫,使得WebGL的3D效果在瀏覽器中運用很容易。而在原始的WebGL中一個簡單的立方體會變成數百Javascript和著色器代碼的
        推薦度:
        標簽: 創建 場景 手冊
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 无码精品人妻一区二区三区免费 | 337p日本欧洲亚洲大胆艺术| 无套内谢孕妇毛片免费看看| 国产成人无码区免费A∨视频网站| 亚洲中文无码卡通动漫野外 | 国产成人青青热久免费精品| 亚洲色精品VR一区区三区| 在线观看视频免费完整版| 一本天堂ⅴ无码亚洲道久久| 女人18毛片水真多免费播放| 亚洲精品乱码久久久久久V| 国产免费AV片无码永久免费| 视频一区在线免费观看| 亚洲日本一区二区一本一道 | a在线免费观看视频| 久久亚洲国产视频| 午夜免费1000部| 亚洲中文字幕久久精品蜜桃| 亚洲av日韩av欧v在线天堂| 国产国产人免费人成成免视频| 亚洲国产精品一区二区第一页| 免费无遮挡无码永久视频| 亚洲一卡二卡三卡四卡无卡麻豆| 成人免费男女视频网站慢动作| 免费人成大片在线观看播放| 国产亚洲一区二区精品| 99久久免费国产香蕉麻豆| 亚洲精品国产第一综合99久久| 国产成人毛片亚洲精品| 95免费观看体验区视频| 亚洲精品无码高潮喷水A片软| 亚洲五月午夜免费在线视频| 中文字幕免费视频一| 亚洲sm另类一区二区三区| 亚洲日韩欧洲乱码AV夜夜摸| 免费观看激色视频网站(性色)| 国内成人精品亚洲日本语音| 久久精品国产亚洲AV麻豆~| 女人18一级毛片免费观看| 丁香花在线视频观看免费| 亚洲国产精品一区二区三区在线观看 |