javascript - GLGE API setRot/setRotX 不起作用

标签 javascript 3d rotation glge

我正在尝试制作一个用于查看 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/

相关文章:

javascript - 如何在没有 CORS 问题的情况下从外部域获取 ttf

python - Pygame 的 3D 中的 rect.clip 函数

image-processing - 如何在知道 3D 对象所有 2D View (顶 View 、下 View 、前 View 、后 View ……)的情况下推断出 3D 对象的任何 View

javascript - 如何在D3中的可缩放冰柱布局中获取文本标签的旋转?

java - 了解 Graphics 2D 和旋转、drawRect 方法

javascript - 从 package.json 运行 Node.js 命令

javascript - 当函数作为参数传入时,如何引用函数的参数?

javascript - jquery 找不到文本

qt - QML 加载并显示具有颜色属性的 .ply 网格

javascript - CSS/JAVASCRIPT 旋转 javascript 问题