gpt4 book ai didi

javascript - Threejs 围绕 3d 矩阵 Axis 中的另一个对象旋转一个对象

转载 作者:行者123 更新时间:2023-11-30 20:29:19 25 4
gpt4 key购买 nike

现在我可以设置一个轴来旋转。

Working code: 
https://codepen.io/itzkinnu/full/erwKzY

如何在随机 Axis 而不是一个固定 Axis 上旋转对象。

像这样的 Random rotation

最佳答案

如果您希望一个对象相对于另一个对象定位,则必须将该对象添加为引用对象的子对象。

使用Object3D.add将 child 添加到对象。

看例子:

(function onLoad() {
var container, loader, camera, scene, renderer, controls, mesh, child;

init();
animate();

function init() {
container = document.getElementById('container');

renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
container.appendChild(renderer.domElement);

camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 100);
camera.position.set(0, -4, -1.5);

loader = new THREE.TextureLoader();
loader.setCrossOrigin("");

scene = new THREE.Scene();
scene.background = new THREE.Color(0xffffff);
scene.add(camera);
window.onresize = resize;

var ambientLight = new THREE.AmbientLight(0x404040);
scene.add(ambientLight);

var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
directionalLight.position.x = -0.75;
directionalLight.position.y = -0.5;
directionalLight.position.z = -1;
scene.add( directionalLight );

controls = new THREE.OrbitControls(camera, renderer.domElement);

var axis = new THREE.AxesHelper(2);
scene.add(axis);

var material = new THREE.MeshPhongMaterial({color:'#f08080'});
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
mesh = new THREE.Mesh(geometry, material);

var material2 = new THREE.MeshPhongMaterial({color:'#8080f0'});
var geometry2 = new THREE.BoxGeometry( 1, 1, 1 );
child = new THREE.Mesh(geometry2, material2);
child.position.x = 1.5;

mesh.add(child);
scene.add(mesh);
}

function resize() {
var aspect = window.innerWidth / window.innerHeight;
renderer.setSize(window.innerWidth, window.innerHeight);
camera.aspect = aspect;
camera.updateProjectionMatrix();
}

function animate() {

child.position.set(0, 0, 0);
child.rotateY(0.02)
child.translateX(1.5);

mesh.position.set(0, 0, 0);
mesh.rotateZ(0.01);
mesh.translateX(1.0);

requestAnimationFrame(animate);
render();
}

function render() {
renderer.render(scene, camera);
}
})();
<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<div id="container"></div>

关于javascript - Threejs 围绕 3d 矩阵 Axis 中的另一个对象旋转一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com