|
|
发表于 2010-7-24 22:10:00
|
显示全部楼层
Re:LOD地形网格顶点间距怎样设定具体的“米”。
我先说下我的见解。
有2种方法。
1:创建MESH数据的时候。首先,我们知道MESH的顶点格式肯定包括position部分。你要创建256*256大小的网格,肯定需要填充256*256个顶点的position信息。
for( int i; i<256; i++ )
{
for( int j; j<256; j++ )
{
D3DXVECTOR3 pos = D3DXVECTOR3( i, 0, j );
vertex[j] = VERTEX( pos ); //VERTEX是MESH的顶点格式,这里假设只有坐标信息。
}
}
上面这个方法创建的MESH顶点之间的间隔为单位1.
看下面的代码:
for( int i; i<256; i++ )
{
for( int j; j<256; j++ )
{
D3DXVECTOR3 pos = D3DXVECTOR3( i*50, 0, j*50 );
vertex[j] = VERTEX( pos ); //VERTEX是MESH的顶点格式,这里假设只有坐标信息。
}
}
这样MESH的顶点之间的间隔为50,当我们用一个只有移动因素(不包缩放因素)的WorldMatrix把它从模型坐标系变换到世界坐标系里的时候,MESH在世界坐标系里顶点的间隔就是50个单位。
当然,这个单位是由你来定义的,你可以把他定义为米,也可以定义为厘米。
第二种方法是:
for( int i; i<256; i++ )
{
for( int j; j<256; j++ )
{
D3DXVECTOR3 pos = D3DXVECTOR3( i, 0, j );
vertex[j] = VERTEX( pos ); //VERTEX是MESH的顶点格式,这里假设只有坐标信息。
}
}
创建完毕后,用一个WorldMatrix把它放大50倍到世界坐标系里。
===========================================================
可能有疏漏和错误的地方,还请指正。
|
|