
场景中的两个对象.立方体旋转轴应该是立方体的中心,这是我的期望.
但鞋模的旋转轴是世界的y轴.
我的原始代码是.
cube.rotation.y += 0.01;
shoe.rotation.y += 0.01;
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow中找到了一个解决方案,如下所示:
cube.rotation.y += 0.01;
var pivot = new THREE.Object3D();
pivot.add(shoe);
pivot.rotation.y += 0.01;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.然后,我改变鞋子的位置.
cube.rotation.y += 0.01;
var pivot = new THREE.Object3D();
shoe.position.set(-5,0,0);
pivot.add(shoe);
pivot.rotation.y += 0.01;
Run Code Online (Sandbox Code Playgroud)
现在结果更好,但仍然不完美.而且由于鞋子的型号很多,我无法确定每种鞋型的不同位置.
我已经创建了一个圆柱体,我想通过更改它的边界框将其旋转中心移动到其中一个但是它不起作用.
有一个我一直在努力的例子.
基本上我想要将圆柱体旋转,好像是一把剑被它的手柄摆动.
我有一个简单的three.js场景,在飞机上包含一个3D Homer Simpson.我希望能够使用鼠标在他自己的y轴上旋转他.
以下代码几乎就在那里.有点我从这里和那里拼凑起来和我自己的位.问题在于,我只是无法绕着他的y轴旋转他,一个正在穿过他的核心,正好在中间.
在包含的代码中,如果我使用框架作为参考,他会旋转一圈.其周长(在这个例子中恰好是偶然的)大约是他所站立的飞机的大小.
如果我移除框架而不是使用模型旋转,那么他几乎在y轴上旋转 - 除了I轴就在他的身边.
我使用以下模型.事实上,我希望他旋转的方式就是他在3D Warehouse示例中的表现方式.如果你点击3D视图并旋转他,你会看到我想要实现的目标.
// nasty globals, but this is just a sandbox.
var camera;
var frame;
var loader = new THREE.ColladaLoader();
var model;
var plane;
var renderer;
var scene;
var mouseX = 0;
var mouseXOnMouseDown = 0;
var targetRotation = 0;
var targetRotationOnMouseDown = 0;
var windowHalfX = 800 / 2;
loader.load('Homer/models/body.dae', function(collada) {
model = collada.scene;
model.position.x = 0;
model.position.y = 0; …Run Code Online (Sandbox Code Playgroud)