ogre實現加入物理效果terrain

2021-05-24 22:46:26 字數 2114 閱讀 1723

return;

const vertexdata *data = (blended_data) ? blended_data: vertex_data;

const unsigned int prev_size = _vertex_count;

_vertex_count += (unsigned int)data->vertexcount;

ogre::vector3* tmp_vert = new ogre::vector3[_vertex_count];

if (_vertices)

_vertices = tmp_vert;

// get the positional buffer element

vbuf->unlock();

}// get the bone index element

if (_entity && _entity->hasskeleton())

l->push_back(*curvertices);

curvertices++;

}vbuf->unlock();}}

}從ogre中設定terrain的物理效果我認為可以分成兩類:

第一類很簡單是從高度圖直接讀出然後建立定點索引序列,自己動手建立地形;

第二類是從實體建立,很簡單的說就是從mesh模型來建立,這樣的好處就是不用自己渲染了。。。

現在只實現了第二類的方法,其實本質就是從mesh裡提取頂點資訊和索引資訊然後填充到

nx********meshdesc* ********meshdesc; 剩下的無非是生成對應的模型而已;

else

nxclosecooking();

// create ********mesh above code segment.

nx********meshshapedesc tmsd;

tmsd.meshdata  = pmesh;

tmsd.userdata  = ********meshdesc;

tmsd.localpose.t = nxvec3(0, 0, 0);

tmsd.meshpagingmode = nx_mesh_paging_auto;

tmsd.shapeflags     = nx_sf_feature_indices;

nxactordesc actordesc;

assert(tmsd.isvalid());

actordesc.shapes.pushback(&tmsd);

if (pmesh)

return gscene->createactor(actordesc);

else

return null;

}返回的actor就可以直接使用了,因為沒有設定body,所以預設為static,當有物體落到表面是自動進行碰撞檢測;

這個實現的關鍵還在於對mesh的資料的提取,這是從ogreode中「剽竊」的一段**,演示如何提取頂點資料和索引資料;

//const bool ishwanimated = isskeletonanimated && entity->ishardwareanimationenabled();

if (isskeletonanimated)

}for(unsigned int i = 0;i < _entity->getnumsubentities();++i)

}addindex和addvertex分別向該類中寫入資料:

void ********meshdata::addindexdata(indexdata *data, const unsigned int offset)

_indices = tmp_ind;

const unsigned int numtris = (unsigned int) data->indexcount / 3;

hardwareindexbuffersharedptr ibuf = data->indexbuffer; 

const bool use32bitindexes = (ibuf->gettype() == hardwareindexbuffer::it_32bit);

unsigned int index_offset = prev_size;

ibuf->unlock();}}

ogre實現加入物理效果terrain

從ogre中設定terrain的物理效果我認為可以分成兩類 第一類很簡單是從高度圖直接讀出然後建立定點索引序列,自己動手建立地形 第二類是從實體建立,很簡單的說就是從mesh模型來建立,這樣的好處就是不用自己渲染了。現在只實現了第二類的方法,其實本質就是從mesh裡提取頂點資訊和索引資訊然後填充到 ...

Ogre 發光效果

ogre 對單個物體使用 glow 效果 使用的資源 1.glow.compositor compositor glow get scene rendered with glow scheme target glowmap pass render scene blur it along x.targ...

Tiny Wings物理運動效果

1.碰撞檢測 碰撞是用的象素級別的檢測,這也是導致效能不太高的其中乙個原因。原理是圓形區域在運動時,會判斷是否有地圖的資料點與圓心的距離小於圓半徑,如果有的話會將這些點存起來 如圖1 之前碰撞後產生的點集取第一點和最後一點,兩點可以生成一條直線,通過求出這條直線的斜率就可以得到碰撞後的運動方向 如圖...