在两个不同的位置渲染 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 文件的主要内容,如果未能解决你的问题,请参考以下文章