three.js-結(jié)合dat.gui實現(xiàn)界面可視化修改及調(diào)試詳解
gitee 地址
gitee
地址: gittee地址
本篇目標(biāo)
- 結(jié)合dat.gui實現(xiàn)界面可視化修改及調(diào)試
下載 dat.gui
pnpm i dat.gui
引入及創(chuàng)建
引入
import * as Dat from "dat.gui";
創(chuàng)建
/// 創(chuàng)建 dat const dat = new Dat.GUI();
使用
這里我是裝在一個函數(shù)里的,但不影響
/// 添加菜單 function addMenuItem () { // x 軸坐標(biāo) dat .add(cube.position, 'x') .max(10) .min(0) .step(0.01) .name('移動x軸') .onChange(value => { console.log('我是當(dāng)前正在移動的x軸', value); }) .onFinishChange(value => { console.log('我是當(dāng)前移動結(jié)束的x軸', value); }) } // 添加菜單 addMenuItem ()
效果圖
這樣我們設(shè)置和退出畫布全屏的這個功能就做好了。
完整代碼
import * as THREE from "three" // 目標(biāo):使用 dat.gui 進(jìn)行 可視化調(diào)試 import * as Dat from "dat.gui"; /// 創(chuàng)建場景 const scene = new THREE.Scene() /// 創(chuàng)建 dat const dat = new Dat.GUI(); /// 創(chuàng)建相機 /* PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number ) fov — 攝像機視錐體垂直視野角度 aspect — 攝像機視錐體長寬比 near — 攝像機視錐體近端面 far — 攝像機視錐體遠(yuǎn)端面 */ /// 透視相機 const camera = new THREE.PerspectiveCamera( 75, // 攝像機視錐體垂直視野角度,從視圖的底部到頂部,以角度來表示。默認(rèn)值是50。 window.innerWidth / window.innerHeight, // 攝像機視錐體的長寬比,通常是使用畫布的寬/畫布的高。默認(rèn)值是1(正方形畫布)。 0.1, // 攝像機的近端面,默認(rèn)值是0.1。 1000 // 攝像機的遠(yuǎn)端面,默認(rèn)值 2000 ) /// 創(chuàng)建渲染器 const renderer = new THREE.WebGLRenderer(); /// 設(shè)置大小 renderer.setSize( 1000, // 寬度 500 // 高度 ); /// 掛載到頁面 document.body.appendChild(renderer.domElement) /// 添加物體 /* width:立方體x軸的長度, height:立方體y軸的長度, depth:立方體z軸的長度也是深度 */ let geometry = new THREE.BoxGeometry(10, 10, 10); /// 添加材質(zhì) // const material = new THREE.MeshBasicMaterial({ color: 0xffff0000 }); /// 添加材質(zhì) const materials = [] for(let i = 0; i < 6; i++){ materials.push(new THREE.MeshBasicMaterial({ color: Math.random() * 0x00ff0000 })) } /// 添加網(wǎng)格 const cube = new THREE.Mesh( geometry, materials ); scene.add( cube ); // 設(shè)置相機位置 camera.position.z = 50; // 修改場景背景顏色 scene.background = new THREE.Color(0xffffcc99) /// 添加 三色坐標(biāo)軸 const axesHelper = new THREE.AxesHelper(20) scene.add( axesHelper ) /// 渲染 function animate() { // 使用 requestAnimationFrame 執(zhí)行動畫 requestAnimationFrame(animate) // 修改其旋轉(zhuǎn)的度數(shù),讓其每次渲染增加0.01的弧段進(jìn)行渲染 cube.rotation.x += 0.01; cube.rotation.y += 0.01; //scene:前面定義的場景,camera:前面定義的相機 //renderTarget:渲染的目標(biāo)默認(rèn)是是渲染到前面定義的render變量中 //forceClear:每次繪制之前都將畫布的內(nèi)容給清除,即使自動清除標(biāo)志autoClear為false,也會清除 renderer.render(scene, camera) } /// 添加菜單 function addMenuItem () { // x 軸坐標(biāo) dat .add(cube.position, 'x') .max(10) .min(0) .step(0.01) .name('移動x軸') .onChange(value => { console.log('我是當(dāng)前正在移動的x軸', value); }) .onFinishChange(value => { console.log('我是當(dāng)前移動結(jié)束的x軸', value); }) } // 渲染 animate() // 添加菜單 addMenuItem ()
以上就是three.js-結(jié)合dat.gui實現(xiàn)界面可視化修改及調(diào)試詳解的詳細(xì)內(nèi)容,后續(xù)會講解根據(jù) BufferGeometry
設(shè)置的頂點創(chuàng)建幾何矩形,更多關(guān)于three.js dat.gui界面可視化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Flutter?WebView性能優(yōu)化使h5像原生頁面一樣優(yōu)秀
這篇文章主要為大家介紹了Flutter?WebView性能優(yōu)化使h5像原生頁面一樣優(yōu)秀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02微信小程序 wx.request(接口調(diào)用方式)詳解及實例
這篇文章主要介紹了微信小程序 wx.request(接口調(diào)用方式)詳解及實例的相關(guān)資料,wx.request請求方式比較簡單,但是在使用的時候出現(xiàn)錯,這里就記錄下,需要的朋友可以參考下2016-11-11await vs return vs return await關(guān)鍵區(qū)別
這篇文章主要為大家介紹了await vs return vs return await關(guān)鍵區(qū)別解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12微信小程序 scroll-view實現(xiàn)上拉加載與下拉刷新的實例
這篇文章主要介紹了微信小程序 scroll-view實現(xiàn)上拉加載與下拉刷新的實例的相關(guān)資料,需要的朋友可以參考下2017-01-01