在两个不同的位置渲染 obj 文件

Posted

技术标签:

【中文标题】在两个不同的位置渲染 obj 文件【英文标题】:rendering obj files in two different positions 【发布时间】:2014-07-29 08:20:58 【问题描述】:

我需要在其地形上加载一个建筑物,该建筑物可作为两个不同的 .obj 文件使用。

当我加载文件时,它们是重叠的。如何调整这两种不同的模型,使建筑物恰好位于地形之上。

注意:4582420.obj 是构建文件, 4582421.obj为地形文件

加载 obj 模型的代码 sn-p 如下所示

// 加载 obj 模型。

for ( int i = 0; i < 2; i++ )

    char objName[ 256 ];
    char mtlName[ 256 ];


    sprintf_s( objName, "models/sampleA/%d.obj", 4582420 + i );
    std::ifstream ifs( objName );

    if ( ifs.is_open() )
    

        sprintf_s( mtlName, "models/sampleA/%d.mtl", 4582420 + i );
        CObjLoader* pObjMesh = new CObjLoader();
        pObjMesh->Load( offset, objName, mtlName );

        // if open is ok, the obj model will be pushed into gObjs.
        gObjs.push_back( pObjMesh );
    

【问题讨论】:

这是什么库?当您已经加载了 obj 文件时,您应该知道如何定位对象。 【参考方案1】:

您使用什么程序进行渲染?一般来说,您必须提供一个变换矩阵,其中包含每个对象的缩放、旋转和平移。然后将对象的每个顶点乘以变换矩阵以确定其在世界空间中的位置。这就是所谓的对象空间到世界空间的转换。

【讨论】:

OpenGl 用于渲染 @user3138452:OpenGL 只是一个 API。您的程序正在进行渲染。为您渲染的对象实施适当的转换是您的责任。

以上是关于在两个不同的位置渲染 obj 文件的主要内容,如果未能解决你的问题,请参考以下文章

三.js:如何控制渲染顺序

在错误位置渲染的顶点(OpenGl)

华为 AR 引擎 .obj 文件无法正确渲染

创建自定义 .OBJ / .MTL 文件并使用 three.js 进行渲染

渲染复杂 3D 模型 .obj - p5.js 的问题

OBJ Loader 不会“创建”或“渲染”对象