相关疑难解决方法(0)

Three.js - 将自定义几何体移动到原点

我有一些从STEP文件转换获得的自定义几何,我用鼠标旋转它们.它们围绕场景的原点旋转,但由于它们远离它,它们似乎在虚拟球体上旋转.如何将它们移动到原点以使它们看起来不"浮动"(我的意思是我想将虚拟球体的半径减小到零).这是我想要移动的例子.我已经尝试将他们的位置设置为(0,0,0):

object.position.x = 0;
object.position.y = 0;
object.position.z = 0;
Run Code Online (Sandbox Code Playgroud)

但它没有用.

rotation three.js

8
推荐指数
1
解决办法
1万
查看次数

轴改变旋转轴三个js

您好,我实际上使用了 Three.js,我想通过 x 轴旋转我的 3d 模型,但是当我尝试代码时:object.rotation.x += 0.01; 它不像我想要的那样工作。下图说明了它现在在左图上的工作方式以及我想要在右图上的效果。PS:公爵的形状是我的3d模型 在此处输入图片说明

javascript 3d augmented-reality three.js

5
推荐指数
1
解决办法
2191
查看次数

围绕给定轴和角度的枢轴点正确旋转对象

在 Three.js 中似乎有相当多的旋转方式,我个人觉得不是很直观。请参阅示例
http://cloud.engineering-bear.com/apps/robot/robot.html 机器人图片

当我对多个对象应用旋转时,我得到了非常奇怪的意想不到的效果。例如,当我旋转已相互添加的对象并开始旋转父对象时,各个对象将突然彼此以不同的方式放置,而不是它们原来的位置。我现在正在尝试分组,并希望避免同样的效果。

请参阅http://pi-q-robot.bitplan.com/example/robot?robot=/models/thing3088064.json了解当前的情况,并查看https://github.com/BITPlan/PI-Q-Robot了解更多信息源代码。

因此,我根据不同的 API 选项搜索了正确的示例:

回转

function renderScene() {
    stats.update();
    //side1.rotation.z += 0.02;
    pivot.rotation.z += 0.02;
Run Code Online (Sandbox Code Playgroud)

轴旋转

绕世界轴旋转

   object.rotateAroundWorldAxis(p, ax, r * Math.PI * 2 / frames);
Run Code Online (Sandbox Code Playgroud)

在世界轴上旋转

object.rotateOnWorldAxis( axis, angle );
Run Code Online (Sandbox Code Playgroud)

旋转关于点

设置从轴角度旋转

setEulerFrom四元数

   quaternion = new THREE.Quaternion().setFromAxisAngle( axisOfRotation, angleOfRotation );
   object.rotation.setEulerFromQuaternion( …
Run Code Online (Sandbox Code Playgroud)

rotation inverse-kinematics three.js

5
推荐指数
1
解决办法
2834
查看次数

如何根据子女的宽度来集中一个THREE.Group?

我使用Three.js(r86)渲染一组球体.我这样做是通过createSphereGroup从外部库调用一个函数:

// External library code.
function createSphereGroup(sphereCount) [
  var group = new THREE.Group();
  for (var i = 0; i < sphereCount; i++) {
    var geometry = new THREE.SphereGeometry(50);
    var material = new THREE.MeshPhongMaterial({ color: 0xFF0000 });
    var sphere = new THREE.Mesh(geometry, material);
    sphere.position.x = i * 150;
    group.add(sphere);
  }
  return group;
}
Run Code Online (Sandbox Code Playgroud)

(假设外部库是不透明的,我无法修改其中的任何代码.)


// My code.
var group = createSphereGroup(5);
scene.add(group);
Run Code Online (Sandbox Code Playgroud)

......看起来像这样:

截图

如你所见,这组球体偏离中心.我希望该组居中,第三个球体位于两条线相交的点(x=0).

那么我可以通过某种方式使这个群体居中吗?也许通过计算组的宽度然后将其定位在x=-width/2?我知道你可以调用computeBoundingBox几何来确定它的宽度,但是THREE.Group没有几何形状,所以我不知道怎么做...

three.js

4
推荐指数
1
解决办法
2235
查看次数

Three.js对象的"中心"是什么?

当我使用Blender建模对象时,我能够明确定义其中心位置,从中心位置发生平移和旋转.使用Three.js对象时,我似乎找不到等价物.

Three.js对象是否具有定义其"中心"位置的属性?如果没有,物体的中心如何确定?

bounding-box centering three.js

3
推荐指数
1
解决办法
7674
查看次数