最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

three.js-結(jié)合dat.gui實(shí)現(xiàn)界面可視化修改及調(diào)試詳解

 更新時(shí)間:2023年02月12日 14:51:40   作者:桃小瑞  
這篇文章主要為大家介紹了three.js-結(jié)合dat.gui實(shí)現(xiàn)界面可視化修改及調(diào)試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

gitee 地址

gitee地址: gittee地址

本篇目標(biāo)

  • 結(jié)合dat.gui實(shí)現(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();

使用

這里我是裝在一個(gè)函數(shù)里的,但不影響

/// 添加菜單
function addMenuItem () {
    // x 軸坐標(biāo)
    dat
    .add(cube.position, 'x')
    .max(10)
    .min(0)
    .step(0.01)
    .name('移動(dòng)x軸')
    .onChange(value => {
        console.log('我是當(dāng)前正在移動(dòng)的x軸', value);
    })
    .onFinishChange(value => {
        console.log('我是當(dāng)前移動(dòng)結(jié)束的x軸', value);
    })
}
// 添加菜單
addMenuItem ()

效果圖

這樣我們?cè)O(shè)置和退出畫(huà)布全屏的這個(gè)功能就做好了。

完整代碼

import * as THREE from "three"
// 目標(biāo):使用 dat.gui 進(jìn)行 可視化調(diào)試
import * as Dat from "dat.gui";
/// 創(chuàng)建場(chǎng)景
const scene = new THREE.Scene()
/// 創(chuàng)建 dat
const dat = new Dat.GUI();
/// 創(chuàng)建相機(jī)
/*
    PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )
        fov — 攝像機(jī)視錐體垂直視野角度
        aspect — 攝像機(jī)視錐體長(zhǎng)寬比
        near — 攝像機(jī)視錐體近端面
        far — 攝像機(jī)視錐體遠(yuǎn)端面
*/
/// 透視相機(jī)
const camera = new THREE.PerspectiveCamera(
    75, // 攝像機(jī)視錐體垂直視野角度,從視圖的底部到頂部,以角度來(lái)表示。默認(rèn)值是50。
    window.innerWidth / window.innerHeight, // 攝像機(jī)視錐體的長(zhǎng)寬比,通常是使用畫(huà)布的寬/畫(huà)布的高。默認(rèn)值是1(正方形畫(huà)布)。
    0.1, // 攝像機(jī)的近端面,默認(rèn)值是0.1。
    1000 // 攝像機(jī)的遠(yuǎn)端面,默認(rèn)值 2000
)
/// 創(chuàng)建渲染器
const renderer = new THREE.WebGLRenderer();
/// 設(shè)置大小
renderer.setSize(
    1000, // 寬度
    500 // 高度
);
/// 掛載到頁(yè)面
document.body.appendChild(renderer.domElement)
/// 添加物體
/*
    width:立方體x軸的長(zhǎng)度,
    height:立方體y軸的長(zhǎng)度,
    depth:立方體z軸的長(zhǎng)度也是深度
*/
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è)置相機(jī)位置
camera.position.z = 50;
// 修改場(chǎng)景背景顏色
scene.background = new THREE.Color(0xffffcc99)
/// 添加 三色坐標(biāo)軸
const axesHelper = new THREE.AxesHelper(20)
scene.add( axesHelper )
/// 渲染
function animate() {
    // 使用 requestAnimationFrame 執(zhí)行動(dòng)畫(huà)
    requestAnimationFrame(animate)
    // 修改其旋轉(zhuǎn)的度數(shù),讓其每次渲染增加0.01的弧段進(jìn)行渲染
    cube.rotation.x += 0.01;
	cube.rotation.y += 0.01;
    //scene:前面定義的場(chǎng)景,camera:前面定義的相機(jī)
    //renderTarget:渲染的目標(biāo)默認(rèn)是是渲染到前面定義的render變量中
    //forceClear:每次繪制之前都將畫(huà)布的內(nèi)容給清除,即使自動(dòng)清除標(biāo)志autoClear為false,也會(huì)清除
    renderer.render(scene, camera)
}    
/// 添加菜單
function addMenuItem () {
    // x 軸坐標(biāo)
    dat
    .add(cube.position, 'x')
    .max(10)
    .min(0)
    .step(0.01)
    .name('移動(dòng)x軸')
    .onChange(value => {
        console.log('我是當(dāng)前正在移動(dòng)的x軸', value);
    })
    .onFinishChange(value => {
        console.log('我是當(dāng)前移動(dòng)結(jié)束的x軸', value);
    })
}
// 渲染
animate()
// 添加菜單
addMenuItem ()

以上就是three.js-結(jié)合dat.gui實(shí)現(xiàn)界面可視化修改及調(diào)試詳解的詳細(xì)內(nèi)容,后續(xù)會(huì)講解根據(jù) BufferGeometry 設(shè)置的頂點(diǎn)創(chuàng)建幾何矩形,更多關(guān)于three.js dat.gui界面可視化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序  audio音頻播放詳解及實(shí)例

    微信小程序 audio音頻播放詳解及實(shí)例

    這篇文章主要介紹了微信小程序 audio音頻播放詳解及實(shí)例的相關(guān)資料,附有實(shí)例代碼及實(shí)現(xiàn)效果圖,對(duì)初學(xué)者是個(gè)很好的幫助,需要的朋友可以參考下
    2016-11-11
  • 微信小程序點(diǎn)擊控件修改樣式實(shí)例詳解

    微信小程序點(diǎn)擊控件修改樣式實(shí)例詳解

    這篇文章主要介紹了 微信小程序點(diǎn)擊控件修改樣式實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • js前端埋點(diǎn)監(jiān)控解析

    js前端埋點(diǎn)監(jiān)控解析

    本文針對(duì)埋點(diǎn)系統(tǒng)和監(jiān)控系統(tǒng)的融合的一點(diǎn)進(jìn)行簡(jiǎn)單的介紹與探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • JS構(gòu)造函數(shù)和實(shí)例化的關(guān)系及原型引入

    JS構(gòu)造函數(shù)和實(shí)例化的關(guān)系及原型引入

    這篇文章主要介紹了JS構(gòu)造函數(shù)和實(shí)例化的關(guān)系及原型引入,下文圍繞JS構(gòu)造函數(shù)和實(shí)例化的關(guān)系及原型引入的西安海關(guān)資料展開(kāi)全文內(nèi)容,需要的朋友可以參考一下,希望對(duì)大家有所幫助
    2021-11-11
  • 微信小程序之獲取當(dāng)前位置經(jīng)緯度以及地圖顯示詳解

    微信小程序之獲取當(dāng)前位置經(jīng)緯度以及地圖顯示詳解

    最近剛開(kāi)始接觸微信小程序,在弄懂其結(jié)構(gòu)以及相關(guān)接口之后,準(zhǔn)備著手實(shí)現(xiàn)一個(gè)小程序,功能包括--獲取用戶當(dāng)前位置的經(jīng)緯度,在地圖上查看位置,通過(guò)地圖獲取不同位置的經(jīng)緯度。
    2017-05-05
  • Web應(yīng)用開(kāi)發(fā)TypeScript使用詳解

    Web應(yīng)用開(kāi)發(fā)TypeScript使用詳解

    這篇文章主要為大家介紹了Web應(yīng)用開(kāi)發(fā)TypeScript的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 微信小程序 引用其他js文件實(shí)現(xiàn)代碼

    微信小程序 引用其他js文件實(shí)現(xiàn)代碼

    這篇文章主要介紹了微信小程序 引用其他js文件實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • webpack5之output和devServer的publicPath區(qū)別示例詳解

    webpack5之output和devServer的publicPath區(qū)別示例詳解

    這篇文章主要為大家介紹了webpack5之output和devServer的publicPath區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • delete?語(yǔ)法的本質(zhì)深入解析

    delete?語(yǔ)法的本質(zhì)深入解析

    這篇文章主要為大家介紹了delete?語(yǔ)法的本質(zhì)深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • JavaScript 定時(shí)器詳情

    JavaScript 定時(shí)器詳情

    這篇文章主要介紹了JavaScript 定時(shí)器,在JavaScript中定時(shí)器有兩個(gè) setInterval() 與 setTimeout() 分別還有取消定時(shí)器的方法,下面來(lái)看看文章的詳細(xì)介紹
    2021-11-11

最新評(píng)論

耿马| 大邑县| 乌鲁木齐县| 衡水市| 磐石市| 武邑县| 商洛市| 湟中县| 临潭县| 神木县| 布尔津县| 扎鲁特旗| 伊宁县| 晴隆县| 宝丰县| 蚌埠市| 车险| 锡林浩特市| 乌兰察布市| 黄平县| 临江市| 板桥市| 广昌县| 紫云| 樟树市| 贵德县| 锦州市| 浮梁县| 长葛市| 金昌市| 岳普湖县| 南漳县| 双桥区| 大宁县| 本溪市| 沛县| 凤台县| 长海县| 乌拉特前旗| 武陟县| 华坪县|