【问题标题】:Three.js: display the object in the middle of the scene三.js:在场景中间显示物体
【发布时间】:2012-11-29 20:20:43
【问题描述】:

我尝试用OBJLoader加载3D模型,成功了。模型是用三维建模软件绘制的,用转换软件转换成.obj格式。因为模型是绝对定位的,所以显示模型总是有问题。

在这种情况下,如何将物体显示在场景中间,让模型看起来正常?

您能帮我解决这个问题吗?谢谢!

【问题讨论】:

    标签: three.js


    【解决方案1】:

    我会提出一些思路,但我不知道您所说的“显示模型总是有问题”和“使模型看起来正常”是什么意思。

    在我对 Three.js 的(小)体验中,我偶然发现了两个主要类别的问题:
    - 定位,即你最终得到不正确的坐标,比如太大/太小超出范围:为此,研究你的模型,计算并显示边界框和/或边界球(尝试在浏览器的错误窗口中写入日志),并根据找到的值调整相机,
    - 灯光,有时您会看到几乎看不见的黑底黑字:为此,从材质和灯光开始,环境为 {1,1,1},因此模型在黑色背景上清晰地显示为纯白色,然后细化材质和灯光以提供所需的效果。

    暂时不能多说,直到我更准确地知道你的问题是什么......

    输出错误日志的小代码:

    function log(msg) {
        setTimeout(function() {
            throw new Error(msg);
        }, 0);
    }
    

    这样使用:

    log('Radius = ' + radius);
    

    【讨论】:

    • 非常感谢您的回答。我的问题是每次加载模型时如何在场景/屏幕中间显示模型。而且我想知道 Three.js 中是否有机制可以支持它。再次感谢您!
    • 根据您的评论,我认为您的照明是正确的:您实际上可以在屏幕上看到对象,但它相对于相机的位置不正确。因此,您应该尝试计算对象的边界框,将相机放置在距 BB 中心适当距离的位置,具体取决于焦点,然后让它看 BB 中心。 Three.js 具有支持该功能的功能。你用什么来控制?或者,如果您不使用 Controls 实用程序,请查看 Camera 类及其派生类。
    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多