Three.js 三个js-移动旋转轴
我使用threejs创建了一个简单的圆柱体对象,并在z轴上旋转它。对象围绕中心轴旋转,圆柱体的两端围绕位于圆柱体中心的轴旋转 如何使其在不同的轴上旋转?我想让圆柱体的一端在一个固定点上旋转,而另一端在圆周上旋转。我的代码如下Three.js 三个js-移动旋转轴,three.js,Three.js,我使用threejs创建了一个简单的圆柱体对象,并在z轴上旋转它。对象围绕中心轴旋转,圆柱体的两端围绕位于圆柱体中心的轴旋转 如何使其在不同的轴上旋转?我想让圆柱体的一端在一个固定点上旋转,而另一端在圆周上旋转。我的代码如下 init(); function init() { renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('myCanvas'), antialias: true }); r
init();
function init() {
renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('myCanvas'), antialias: true });
renderer.setClearColor(0xeaebed);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
camera = new THREE.PerspectiveCamera(5, window.innerWidth / window.innerHeight, 0.1, 4000);
scene = new THREE.Scene();
//LIGHTS
var light = new THREE.AmbientLight(0xffffff, 1);
scene.add(light);
var light1 = new THREE.PointLight(0xffffff, 0.3);
scene.add(light1);
//Gun holder
var gunHolder = new THREE.Object3D();
var gunHolderColour = 0x0f4207;
var gunHolderBaseCylinderGeometry = new THREE.CylinderGeometry(10, 10, 50, 32);
var gunHolderBaseCylinderMaterial = new THREE.MeshStandardMaterial({
color: gunHolderColour,
metalness: 0.5,
roughness: 0.5
});
var gunHolderBaseCylinderMesh = new THREE.Mesh(gunHolderBaseCylinderGeometry, gunHolderBaseCylinderMaterial);
gunHolderBaseCylinderMesh.position.set(0, -8, -3000);
scene.add(gunHolderBaseCylinderMesh);
requestAnimationFrame(render);
function render() {
gunHolderBaseCylinderMesh.rotation.z += 0.01;
renderer.render(scene, camera);
requestAnimationFrame(render);
}
}
您可以使用几何图形的
.translate()
方法:
var gunHolderBaseCylinderGeometry = new THREE.CylinderGeometry(10, 10, 50, 32); // height is 50
gunHolderBaseCylinderGeometry.translate(0, 25, 0); // move upwards at half of height, 25
renderer=new THREE.WebGLRenderer({
反别名:对
});
renderer.setClearColor(0xeaebed);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
摄像头=新的三个透视摄像头(5,window.innerWidth/window.innerHeight,0.14000);
场景=新的三个。场景();
//灯光
var灯光=新的三个环境灯光(0xffffff,1);
场景。添加(灯光);
var light1=新的三点光源(0xffffff,0.3);
场景。添加(light1);
//持枪人
var gunHolder=new THREE.Object3D();
var GunholderColor=0x0f4207;
var gunholderbascylindergeometry=新的三个圆柱几何体(10,10,50,32);
枪柄二圆柱几何体.平移(0,25,0);
var gunHolderBaseCylinderMaterial=新的三点网格标准材质({
颜色:枪托颜色,
金属度:0.5,
粗糙度:0.5
});
var gunHolderBaseCylinderMesh=新的三点网格(gunHolderBaseCylinderGeometry,gunHolderBaseCylinderMaterial);
枪托二圆柱网格位置设置(0,-8,-3000);
场景.添加(gunHolderBaseCylinderMesh);
请求动画帧(渲染);
函数render(){
请求动画帧(渲染);
枪托二圆柱网格旋转z+=0.01;
渲染器。渲染(场景、摄影机);
}
正文{
溢出:隐藏;
保证金:0;
}
感谢您的回答,它可以工作:)我看到Object3D上没有translate功能。平移X、Y、Z不会移动原点。如何移动复杂Object3D对象的原点?@Sibi不客气)实际上,这取决于您想要实现什么。对于您所问的问题,有几种解决方案。