首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3d.io场景坐标系

3d.io场景坐标系
EN

Stack Overflow用户
提问于 2018-06-01 21:05:02
回答 2查看 85关注 0票数 1

目前,我正在编写代码,指示三维场景中家具项目的坐标。

据我所知,每件家具都有它自己的坐标,这是基于家具件的父母。不管父母是级别还是团体等等..。

如果父母恰好是“水平”,家具件的坐标直接意味着家具件居住在3d场景中。

然而,如果家具件碰巧有一个非水平的父母,则家具件的坐标是基于父母的。

基本上,在我的代码中,我正在编写一个递归函数,它接受一个家具节点并获取它的坐标。

当递归函数迭代时,它会爬升父函数的级别,并根据当前函数中节点的坐标递增原始坐标。

如果当前函数中的节点类是"io3d-level“,则递归函数将停止并返回递增的坐标。这是因为具有“io3d级别”类的节点必须具有{0,0,0}的坐标对象。

同样,递归函数将从家具节点的级别迭代,并将父节点的结构抓取并将其坐标添加到家具节点的原始坐标上,直到函数中的节点的当前类为该级别,此时函数停止并返回坐标。

在几乎所有情况下,这个递归函数似乎都会产生原始的结果。

然而,这个函数并不返回通过它发送的少数家具节点的原始精确坐标。

这种递归函数的假设是,通过获取所有家具节点的父节点的坐标并对其进行求和,可以获得家具节点相对于水平的真实坐标。显然,考虑到x坐标与x坐标相加,z坐标与z坐标相加。

这个假设是假的吗?

我是不是误解了掩盖3d.io场景的坐标系统?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-19 22:10:15

使用three.js句柄可以直接做到这一点,而不会有不准确的地方。

代码语言:javascript
复制
let worldCoordinates = obj.data3dView.threeParent.getWorldPosition();
票数 1
EN

Stack Overflow用户

发布于 2018-06-04 09:06:52

我想你的代码出了点问题

所以最好是分享你的代码,这样我们就不用猜测了。

下面是一个小片段,它在处理场景结构时将元素的父位置应用于元素

代码语言:javascript
复制
// apply parent location
function applyLocation(element, parent) {
  // Rotate element on the XZ plane around parent's center
  var angleY = -parent.ry * Math.PI / 180
  var rotatedX = element.x * Math.cos(angleY) - element.z * Math.sin(angleY)
  var rotatedZ = element.z * Math.cos(angleY) + element.x * Math.sin(angleY)

  // Get parent space coordinates for our element
  element.x = parent.x + rotatedX
  element.y += parent.y
  element.z = parent.z + rotatedZ
  element.ry += parent.ry
  return element
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50650982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档