当前位置:网站首页>Contrôleur pour threejs cube Space Basic Controller + Inertial Control + Flight Control
Contrôleur pour threejs cube Space Basic Controller + Inertial Control + Flight Control
2022-07-02 14:30:00 【Sous le pont avant.】
threejsContrôleur pour Espace cubique Contrôleur de base+Contrôle inertiel+Commandes de vol
import React, {
Component} from 'react';
import * as THREE from "three";
import {
OrbitControls} from "three/examples/jsm/controls/OrbitControls";
// import {reflect} from "three/examples/jsm/nodes/shadernode/ShaderNodeBaseElements";
// import {Refractor} from "three/examples/jsm/objects/Refractor";
// import {Reflector} from "three/examples/jsm/objects/Reflector";
//Plus InertielOrbitControls Mise à jour de base de
import {
TrackballControls} from "three/examples/jsm/controls/TrackballControls";
//Commandes de vol Vue de fonctionnement de la souris Pour aller de l'avant et aller de l'avant
import {
FlyControls} from "three/examples/jsm/controls/FlyControls";
const clock=new THREE.Clock()
class Index extends Component {
ready:false
constructor(args) {
super(args);
this.state={
width:window.innerWidth,
height:window.innerHeight,
count:0,
}
this.ballpoi={
x:0,
y:100,
z:0,
vx:(Math.random()-0.5)*7,
vy:(Math.random()-0.5)*7,
vz:(Math.random()-0.5)*7
}
}
render() {
return (
<div className={
'three-canvas'}>
</div>
);
}
componentDidMount() {
if(this.state.count===0){
this.init()
// eslint-disable-next-line react/no-direct-mutation-state
this.state.count++
}
}
getRenderer(){
//Paramètres
const renderer=new THREE.WebGLRenderer()
renderer.setSize(this.state.width,this.state.height)
document.querySelector('.three-canvas').appendChild(renderer.domElement)
return renderer
}
getCamera(){
const camera=new THREE.PerspectiveCamera(75,this.state.width/this.state.height,1,1000)
camera.position.z=400
camera.lookAt(0,0,0)
return camera
}
getScene(){
const scene=new THREE.Scene()
return scene
}
getControl(){
const control=new FlyControls(this.camera,this.renderer.domElement)
control.movementSpeed=50
control.autoForward =false
control.rollSpeed=0.5
return control
}
addLight(){
//Éclairage ambiant
const light = new THREE.AmbientLight( 0xffffff,0.5);
const pointLight = new THREE.PointLight( 0xffffff,1);
pointLight.position.set(0,0,0)
pointLight.castShadow=true
this.scene.add( light ,pointLight);
}
addPlane(){
const geometry=new THREE.BoxGeometry(Math.random()*10,Math.random()*10,Math.random()*10)
const material = new THREE.MeshNormalMaterial({
side: THREE.DoubleSide})
const box= new THREE.Mesh(
geometry,
material
)
box.rotation.set(Math.PI/(Math.random()*10),Math.PI/(Math.random()*10),Math.PI/(Math.random()*10))
box.position.set((Math.random()-0.5)*300,(Math.random()-0.5)*300,(Math.random()-0.5)*300)
this.scene.add(box)
return box
}
init(){
//Créationrander --La caméra ---Scénario----Animation
this.renderer=this.getRenderer()
this.camera=this.getCamera()
this.scene=this.getScene()
this.scene.background=new THREE.Color('#d1b8b8')
for (let i=0;i<400;i++){
this.addPlane()
}
//Ajouter des lumières
this.addLight()
//Ajouter un contrôleur
this.control=this.getControl()
//Exécuter l'animation
this.animation()
}
animation(){
requestAnimationFrame(this.animation.bind(this))
this.renderer.render(this.scene,this.camera)
this.control.update(clock.getDelta())
}
}
export default Index;
边栏推荐
- P1042 [NOIP2003 普及组] 乒乓球
- Adhere to the foundation of 20 minutes go every day II
- 2022 home projector preferred! Dangbei F5 brings the ultimate audio-visual experience with its powerful audio-visual effect
- A white hole formed by antineutrons produced by particle accelerators
- 途家木鸟美团夏日折扣对垒,门槛低就一定香吗?
- The most complete analysis of Flink frame window function
- Generally speaking, if the error of inconsistent tab and space occurs frequently
- How many knowledge points can a callable interface have?
- Dangbei projection 4K laser projection X3 Pro received unanimous praise: 10000 yuan projector preferred
- < schematic diagram of oral arithmetic exercise machine program development> oral arithmetic exercise machine / oral arithmetic treasure / children's math treasure / children's calculator LCD LCD driv
猜你喜欢

<口算練習機 方案開發原理圖>口算練習機/口算寶/兒童數學寶/兒童計算器 LCD液晶顯示驅動IC-VK1621B,提供技術支持

Who is better, Qianyuan projection Xiaoming Q1 pro or Jimi new play? Which configuration is higher than haqu K1?

< schematic diagram of oral arithmetic exercise machine program development> oral arithmetic exercise machine / oral arithmetic treasure / children's math treasure / children's calculator LCD LCD driv

Essential elements of science fiction 3D scenes - City

STM32-DAC实验&高频DAC输出测试

Daily learning 3

全屋Wi-Fi:一个谁也解决不好的痛点?

Borui data integrated intelligent observable platform was selected into the "Yunyuan production catalogue" of China Academy of communications in 2022

Fabric. JS zoom canvas

php链表创建和遍历
随机推荐
卷积神经网络(入门)
Fabric. JS zoom canvas
当贝投影4K激光投影X3 Pro获得一致好评:万元投影仪首选
<口算练习机 方案开发原理图>口算练习机/口算宝/儿童数学宝/儿童计算器 LCD液晶显示驱动IC-VK1621B,提供技术支持
Dangbei projection 4K laser projection X3 Pro received unanimous praise: 10000 yuan projector preferred
P1042 [NOIP2003 普及组] 乒乓球
[development environment] Dell computer system reinstallation (download Dell OS recovery tool | use Dell OS recovery tool to make USB flash disk system | install system)
Fabric.js 自由绘制圆形
《可供方案开发》口算训练机/数学宝/儿童口算宝/智能数学宝 LCD液晶显示驱动IC-VK1622(LQFP64封装),原厂技术支持
Story points vs. human days
由粒子加速器产生的反中子形成的白洞
The global special paper revenue in 2021 was about $27 million, and it is expected to reach $35 million in 2028. From 2022 to 2028, the CAGR was 3.8%
线性dp求解 最长子序列 —— 小题三则
Systemserver process
Tujia muniao meituan has a discount match in summer. Will it be fragrant if the threshold is low?
< schematic diagram of oral arithmetic exercise machine program development> oral arithmetic exercise machine / oral arithmetic treasure / children's math treasure / children's calculator LCD LCD driv
[development environment] 010 editor tool (tool download | binary file analysis template template installation | shortcut key viewing and setting)
PHP linked list creation and traversal
PyQt5_ Qscrollarea content is saved as a picture
MQ tutorial | exchange (switch)