我正试图为观看3D模型做一个小小的准备。
我修改了GLGE示例以从代码中添加一个.dae模型。
http://goleztrol.nl/SO/GLGE/01/
我得到了什么,
到目前为止它起作用了。使用动画旋转摄像机。
使用按钮'Add‘和'Remove’,模型将被添加并从场景中删除,使用下面的代码(不要介意‘鸭子’。在最初的例子中它是一只鸭子。)
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,旋转工作。显然,我的模型不同之处在于它不能旋转。我只是不明白为什么。我想这可能是因为模型是由各种不同的网格构建的,但我不明白为什么缩放和移动是有效的。
有人知道这个模型有什么问题吗?我能做些什么来修复它(也许使用搅拌机)?
在包含场景的XML文件中设置初始旋转确实有效。在另一个元素上设置旋转(就像整个场景一样)也同样有效。
发布于 2011-10-17 22:26:36
你需要在它被加载后旋转它。
您可以在对setDocument的回调中这样做。
duck.setDocument("amyrose.dae", null, function() {
duck.setLocY(-15);
duck.setScale(2);
duck.setRotX(0);
duck.setRotY(0);
duck.setRotZ(3);
});https://stackoverflow.com/questions/7730121
复制相似问题