我正在尝试制作一个用于查看 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 文件中设置初始旋转确实有效。在另一个元素(如整个场景)上设置旋转也可以。
最佳答案
加载后需要旋转它。
您可以在 setDocument
的回调中执行此操作
duck.setDocument("amyrose.dae", null, function() {
duck.setLocY(-15);
duck.setScale(2);
duck.setRotX(0);
duck.setRotY(0);
duck.setRotZ(3);
});
关于javascript - GLGE API setRot/setRotX 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7730121/