TS人妖系列亚洲一区二区I北条麻妃一区二区三区I五月天av网站Iwww日日夜夜I黄色99Iwwwjizz欧美I日韩欧美免费观看I日本欧美国产I9191黄色I911亚洲精品I国模无码avI欧洲无码av

three.js 的簡單實例

2019-9-26    seo達人

three.js 的簡單實例

三大主件: 渲染器、場景、相機



思想核心: 相機獲取到場景內顯示的內容, 然后再通過渲染器渲染到畫布上面



渲染器: 實例化渲染器的同時生成的一個 Canvas 畫布, 之后將這個畫布添加到了 DOM 當中



場景: 場景只是一個容器, 顯示的內容需要進行添加, 添加一個內容稱作一個網格, 每個網格基本上包括幾何體和材質, 網格也稱之為模型



<!DOCTYPE html>

<html>



<head>

<meta charset="utf-8" />

<title>three</title>

<style>

body {

margin: 0;

}



canvas {

width: 100%;

height: 100%;

display: block;

}

</style>

</head>



<body onload="init()">

<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>

<script type="text/javascript" src="js/three.min.js"></script>

<script type="text/javascript" src="js/stats.min.js"></script>

<script type="text/javascript" src="js/dat.gui.min.js"></script>

<script>

//聲明一些全局變量

var renderer, camera, scene, geometry, material, mesh, stats, rotate = true;



//初始化渲染器

function initRenderer() {

renderer = new THREE.WebGLRenderer(); //實例化渲染器

renderer.setSize(window.innerWidth, window.innerHeight); //設置寬和高

document.body.appendChild(renderer.domElement); //添加到dom

}



//初始化場景

function initScene() {

scene = new THREE.Scene(); //實例化場景

}



//初始化相機

function initCamera() {

camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 200); //實例化相機

camera.position.set(0, 0, 15); //初始化的坐標

}



//創建模型

function initMesh() {

geometry = new THREE.BoxGeometry(2, 2, 2); //創建幾何體

material = new THREE.MeshNormalMaterial(); //創建材質

mesh = new THREE.Mesh(geometry, material); //創建網格

scene.add(mesh); //將網格添加到場景

}



//運行動畫

function animate() {

requestAnimationFrame(animate); //循環調用函數



//判斷是否可以旋轉

if(rotate) {

mesh.rotation.x += 0.01; //每幀網格模型的沿x軸旋轉0.01弧度

mesh.rotation.y += 0.02; //每幀網格模型的沿y軸旋轉0.02弧度

}



stats.update(); //更新性能檢測框

renderer.render(scene, camera); //渲染界面

}



//性能檢測框

function initStats() {

stats = new Stats();

document.body.appendChild(stats.dom);

}



//創建調試框

function initGui() {



//控制參數初始值

controls = {

positionX: 0,

positionY: 0,

positionZ: 0,

rotate: true

};



gui = new dat.GUI(); //實例化對象

gui.add(controls, "positionX", -10, 10).onChange(updatePosition);

gui.add(controls, "positionY", -5, 5).onChange(updatePosition);

gui.add(controls, "positionZ", -10, 10).onChange(updatePosition);



function updatePosition() {

mesh.position.set(controls.positionX, controls.positionY, controls.positionZ);

}



gui.add(controls, "rotate").name("旋轉").onChange(function(e) {

rotate = e;

});

}



//初始化函數,頁面加載完成是調用

function init() {

initRenderer();

initScene();

initCamera();

initMesh();

initStats();

initGui();

animate();

}

</script>



</body>



</html>

藍藍設計m.gyxygd.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計  cs界面設計  ipad界面設計  包裝設計  圖標定制  用戶體驗 、交互設計、 網站建設 平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://m.gyxygd.cn

存檔