我正在尝试制作一个小场景来查看 3D 模型。
我修改了 GLGE Collada 示例以从代码中添加 .dae 模型。
http://goleztrol.nl/SO/GLGE/01/
我所拥有的
到目前为止它有效。使用动画旋转相机。
使用“添加”和“删除”按钮,使用以下代码在场景中添加和删除模型(不要介意“鸭子”。在原始示例中它是一只鸭子。)
var duck = null;
function addDuck()
{
if (duck) return;
duck = new GLGE.Collada();
doc.getElement("mainscene").addCollada(duck);
duck.setId("duck");
duck.setDocument("amyrose.dae");
duck.setLocY(-15);
duck.setRotX(1);
duck.setScale(2);
}
function removeDuck()
{
if (!duck) return;
doc.getElement("mainscene").removeChild(duck);
duck = null;
}
问题
现在模型是躺着的,而它应该站起来。元素的各种方法似乎都有效。位置已设置,比例已设置,但对 setRotX 的调用似乎被忽略了。我从 api 尝试了其他各种方法,但 setRotY、setRot、setQuatX 和 setDRotX 似乎都失败了。我没有收到任何错误(当然不是关于这种方法)。我尝试了 1.57 的值(应该是大约 90 度),但也尝试了其他值,范围从 1 到 180。
我无法找出我做错了什么。当然,我可以在 Blender 中旋转模型本身,但我想使用 GLGE API 来完成。
更新
当我加载演示模型时seymourplane_triangulate.dae
,旋转工作。显然我的模型不同之处在于它不能旋转。我只是不明白为什么。我认为这可能是因为模型是由各种单独的网格构建的,但我不明白为什么缩放和移动确实有效。
有谁知道这个模型有什么问题,以及我可以做些什么来修复它(也许使用 Blender)?
在包含场景的 XML 文件中设置初始旋转确实有效。在另一个元素(如整个场景)上设置旋转也可以。