有工具栏进行操作的Cube
import * as THREE from 'three';
import { OrbitControls} from "three/examples/jsm/controls/OrbitControls";
import {gsap} from "gsap";
import * as dat from "dat.gui";
const scene=new THREE.Scene();
const camera=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);
const gui=new dat.GUI();
camera.position.set(10,10,10 );
scene.add(camera);
const box=new THREE.BoxGeometry(1,1,1);
const material=new THREE.MeshBasicMaterial({color:0x00ff00});
const cube=new THREE.Mesh(box,material);
scene.add(cube);
const renderer=new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth,window.innerHeight);
document.body.appendChild(renderer.domElement);
renderer.render(scene,camera);
const controls=new OrbitControls(camera,renderer.domElement);
controls.enableDamping=true;
gui.add(cube.position,"x")
.min(0).
max(5)
.name("Cube X")
.step(0.01)
.onChange((val)=>{
console.log(val)
}).onFinishChange((val)=>{
console.log(val)
})
const params={
color:0xff0000,
fun:()=>{
gsap.to(cube.position,{x:5,duration:5,ease:"bounce.out",yoyo:true,repeat:-1})
}
}
gui.addColor(params,"color").onChange((val)=>{
cube.material.color.set(val);
})
gui.add(cube,"visible").name("Cube Visible");
// gui.add(params,'fun').name("Function");
const folder=gui.addFolder('设置立方体');
folder.add(cube.material,"wireframe").name("Wireframe");
folder.add(params,'fun').name("Function");
function render(time){
// cube.position.x+=0.01;
// cube.rotation.x+=0.01;
// if(cube.position.x>10){
// cube.position.x=0;
// cube.rotation.x=0;
// }
controls.update();
renderer.render(scene,camera);
requestAnimationFrame(render);
}
// const gs=gsap.to(cube.position,{
// duration:5,
// x:10,
// repeat:-1,
// yoyo:true,
// delay:1,
// ease:"bounce.out"
// })
window.addEventListener("dblclick",()=>{
// if(gs.isActive()){
// gs.pause();
// }else{
// gs.resume();
// }
const fullscreen=document.fullscreenElement||document.webkitFullscreenElement;
if(!fullscreen){
renderer.domElement.requestFullscreen();
}
else{
document.exitFullscreen();
}
})
window.addEventListener("resize",()=>{
camera.aspect=window.innerWidth/window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth,window.innerHeight);
renderer.render(scene,camera);
})
const axesHelp=new THREE.AxesHelper(8);
scene.add(axesHelp)
render();

...全文
相关推荐
Cube Invaders-crx插件
语言:español (Latinoamérica) 在线浏览的一款您可以玩的小游戏! 您可以在线浏览的一个小游戏!
理解Kylin中Cube、Cuboid、Cube Segment
Cube和Cuboid和Cube Segment Cuboid在kylin中指定在某一种维度组合下所有计算的数据; Cube(Data Cube),即数据立方体,是一种常用于数据分析与索引的基数;它可以对原始数据建立多维度索引。简单来说,一个Cube就是许多按维度聚合的物化视图的集合; Cube Segment是指针对源数据中的某一个片段,计算出...
大洋D-Cube-Edit v2.81.1.10 3D for 50i 安装图文教程之启动设置
大洋D-Cube-Edit v2.81.1.10 3D for 50i 安装图文教程之启动设置.pdf
STM32 CUBE FLASH程序 HAL库生成 操作方便
STM32 CUBE SPI读写W25Q64 FLASH数据,利用cube快速生成,操作方便!
STM32Cube HAL库操作系统+串口+DMA收发配置
STM32Cube配置操作系统freertos,HAL库串口DMA接收程序。含STM32Cube工程配置,Keilv5工程,freertos/Uart收发/DMA。


