- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在从 collada 文件的“动画”节点加载关节数据信息时遇到问题。
首先,我尝试从“library_visual_scenes”加载关节:
前两个关节看起来像这样:
<visual_scene id="" name="">
<node name="joint1" id="joint1" sid="joint1" type="JOINT">
<translate sid="translate">0.000000 -2.000000 0.000000</translate>
<rotate sid="jointOrientZ">0 0 1 90.000000</rotate>
<rotate sid="rotateZ">0 0 1 0.000000</rotate>
<rotate sid="rotateY">0 1 0 0.000000</rotate>
<rotate sid="rotateX">1 0 0 0.000000</rotate>
<scale sid="scale">1.000000 1.000000 1.000000</scale>
<extra>
<node name="joint2" id="joint2" sid="joint2" type="JOINT">
<translate sid="translate">2.000000 0.000000 0.000000</translate>
<rotate sid="rotateZ">0 0 1 0.000000</rotate>
<rotate sid="rotateY">0 1 0 0.000000</rotate>
<rotate sid="rotateX">1 0 0 0.000000</rotate>
<scale sid="scale">1.000000 1.000000 1.000000</scale>
<extra>
一切顺利!
玛雅关节:
我的关节:
我想放一张照片,但作为新成员,我不能。在这种情况下,您必须相信我,在我的引擎中,关节与在 Maya 中的位置相同。
然后,我尝试从“动画”节点加载关节。问题来了,我找不到任何 jointOrient。
<animation id="joint1-anim" name="joint1">
<animation>
<source id="joint1-translate.Y-output">
<float_array id="joint1-translate.Y-output-array" count="2">-2.000000 -2.000000</float_array>
<animation>
<source id="joint1-rotateZ.ANGLE-output">
<float_array id="joint1-rotateZ.ANGLE-output-array" count="2">0.000000 0.000000</float_array>
<animation id="joint2-anim" name="joint2">
<animation>
<source id="joint2-translate.X-output">
<float_array id="joint2-translate.X-output-array" count="2">2.000000 2.000000</float_array>
所以加载关节后,它们看起来像这样:
这里有人可以帮忙吗?
谢谢。
(对不起,我没有超过10个声誉,我不能放图片。)
最佳答案
对于那些可能感兴趣的人,我终于找到了答案。
collada 的 visual_scene 节点将为您提供关节的绑定(bind)姿势。所以,我要在结构中加载 visual_scene 关节坐标:
类似的东西:
struct Pose
{
vec3 translation,
orientation,
rotation,
scale;
};
Pose bind_pose;
然后我将创建另一个“Pose”结构的实例,使用一个以 Pose 作为参数的构造函数:
Pose anim_pose(bind_pose);
所以在构建之后,来自 visual_scene 和 anim_pose 的 bind_pose 是相同的。
然后我将遍历 library_animations 中的所有动画节点,找到 channel 并感兴趣:
和目标关节。
<channel source="#joint1-translate.X" target="joint1/translate.X"></channel>
这告诉我们(这是我有点迷路的地方)我们要用源值替换目标值。
如果在 channel 节点中找到的源数据与目标数据相同,即。 :
加载 visual_scene 数据后,bind_pose.translation.x 的值为 -3.0,并且
<source id="joint1-translate.X-output">
<float_array id="joint1-translate.X-output-array" count="1">-3.000000</float_array>
我什么都不做。
如果源数据与目标数据不同,我只需将 anim_pose 中的值替换为合适的值即可。
这几乎就是您从 collada 正确加载动画关节所需要做的全部工作。
如果你发现这里有什么问题,请告诉我。
希望这会有所帮助。
关于c++ - 加载 Collada 动画关节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016892/
我正在开展一个项目,将 COLLADA 导出功能添加到现有程序 (PyMOL),并尝试使用 COLLADA DOM库来帮助编写输出文件。对于我想要遵循的各种“保存”函数,存在一个现有结构,其中要导出的
加载 Collada (dae) 模型时如何在 THREE.js 中设置 Material ? 我有以下代码: new THREE.ColladaLoader().load('models/c
我无法使用 collada 加载多个对象,堆栈溢出中的几个答案对我不起作用。我用 three.js 导出但用 collada 不工作。这是我的代码。如果有人知道如何拯救生命。谢谢! function
我在理解场景包几何时遇到问题。 我有 Blender 中的默认立方体,我导出为 collada (DAE),并且可以将其带入 scenekit...一切都很好。 现在我想查看立方体的顶点。在 DAE
当我通过 collada dom 1.4 用查看器加载样本时。 外部引用 我尝试了许多 collada 加载程序,例如 glc_player、google Sketc
我正在尝试使用 Scene Kit 查看名为 test.dae 的文件。当我在编辑器中单击文件时,编辑器窗口中的对象预览会正确建模,包括纹理。但是,当我使用 test.dae 创建场景时,模型会显示,
我已在 xcode 中导入了 3D 隧道的 collada 文件。 2.当我运行我的示例项目时,它显示 3d 隧道非常远且小 class GameViewController: UIViewContr
我使用 ARKit 开发了具有 AR 功能的 iOS 应用程序。我用过this项目。 该应用程序动态地使用 Collada (.dae) 文件,这意味着客户端将 Collada 文件和所有纹理上传到某
我希望你能帮助我。我的问题是 collada 的蒙皮方程: v += {[(v * BSM) * IBMi * JMi] * JW} n:影响顶点v的关节数 BSM:绑定(bind)形状矩阵 IBMi
我想将我的纹理图像文件包含到我的 collada 文件中。 现在我有很多文件:.dae 本身和 .png 纹理文件。 但是我只想要一个文件:.dae,但其中包含纹理。 我可以以某种方式将 .png 图
我有一个 collada 模型 (.dae),我在三个 js 中加载它。一个物体的 Material 应该是这样的: 但它看起来像这样: 颜色没有问题,我可以调整添加到THREE.Scene的灯光,但
我能够使用我自己编写的 collada 加载器加载静态几何体。然而,下一步是添加动画。我遇到的问题是当 instance_controller 有多个骨架时该怎么办。在我当前的模型中,我试图加载每个被
我在使用 ThreeJS collada loader 时遇到问题。我从后端收到带有所有纹理的dae模型。之后,我解析图像(纹理)并创建 Material 数组。 let materials = []
我是 ThreeJS 新手,我正在尝试将 collada 文件加载到查看器中。我首先复制 Elf colladaLoader 演示的代码。 https://threejs.org/examples/#
我已经查看了 http://threejs.org 上的示例.我没有看到任何与 ColladaLoader 对象相关的命中检测。那里的一切都与基本网格形状有关。 是否可以对 Collada 对象进行命
我们使用键控混合形状在 Maya 中创建了一个简单的动画。将其导出为 .dae。 我到处都在尝试和研究,似乎 SceneKit 不会播放这种类型的动画。 我可以在 Xcode 中看到我的 Morphe
我正在构建一个网络表单,以供用户将 .obj 和 .fbx 3D 模型上传到网站。我们需要一个服务器端解决方案来将这些文件转换为 Collada (dae)。 如果有人能为我指出正确的方向,那将非常有
Collada (dae) 文件格式是否可用于内容,还是严格用于 3D 工作室之间的互惠等?例如,我创建了一个 XNA 游戏,我可以创建一个加载器并将其加载到我的游戏中使用吗?这样做是否明智且合法?或
我在为加载的 COLLADA 模型制作动画时遇到了一些问题。我已经编写了自己的解析器,现在我也想编写自己的绘图程序。问题是,一旦我在模型上启用动画,手、腿和头部就会从模型的原点拉伸(stretch)开
我有一个包含两个 collada 对象和一个定向光的场景。第一个 collada 几乎是一个平面,第二个是由多个盒子组成的。 似乎在渲染场景时,一些“侧面”阴影确实被剥离了,尽管转换在地面上的阴影渲染
我是一名优秀的程序员,十分优秀!