Ogre換裝系統

2021-05-26 16:40:23 字數 1068 閱讀 7833

ogre換裝系統

角色換裝作為遊戲裡乙個古老而不可或缺的系統,各個引擎都有完備支援,ogre也不例外。

儘管網上一些討論把ogre換裝說得諱莫如深,實際上它還是很簡單的。早在05年提及這個問題時,sinbad也只是說了一句「use entity::shareskeletoninstancewith」。

遊戲裡的換裝大致分為三類,下面逐一介紹其ogre實現。

一、更換紋理。這算是最簡單的一類,顧名思義,更換材質的貼圖即可。它在ogre中的呼叫可能是這樣的:

body->getmaterial()->gettechnique(0)->getpass(0)->gettextureunitstate(0)->settexturename("clothtexture");
更換紋理實現更換衣服

二、掛接物體。此類應用多是將剛性、無形變的物體掛接到某個骨骼節點上,最常見的就是將**掛接到手部骨骼,實現持握的效果。ogre中呼叫如下:

body->attachobjecttobone("handbone", weapon);
掛接物體實現手持**

三、共享骨骼。這是最常被討論的乙個,要求模型共享一套骨骼。以戴手套為例,手套模型需要共享裸模的骨骼,任何時候都做一樣的動作,如此表現為二者契合,以實現穿戴的效果。ogre中使用如下呼叫:

glove->shareskeletoninstancewith(body);
這類換裝要求美術人員做繫結時使用同一套骨骼,最終匯出的各個模型也應盡量指向相同的骨骼檔案。如果美術指向了名字不同的骨骼,在共享前你得費心呼叫mesh:: setskeletonname()重新指定,始終保證兩個模型使用的骨骼一致。這裡不推薦使用_notifyskeleton(),略顯暴力了。

共享骨骼實現手套、靴子與角色契合

如果你碰巧也使用《火炬之光》的資源做實驗,會發現有些手套模型竟然包含有身體,這樣做的原因很多,防止兩個模型契合處有明顯接縫是其中之一。這時你需要在整合後隱藏那些多餘的subentity,這並不困難,嘗試過你便會明白。

美好的事物理應簡單。

Ogre換裝系統

角色換裝作為遊戲裡乙個古老而不可或缺的系統,各個引擎都有完備支援,ogre也不例外。儘管網上一些討論把ogre換裝說得諱莫如深,實際上它還是很簡單的。早在05年提及這個問題時,sinbad也只是說了一句 use entity shareskeletoninstancewith 遊戲裡的換裝大致分為三...

OGRE 換裝方法

ogre換裝系統 角色換裝作為遊戲裡乙個古老而不可或缺的系統,各個引擎都有完備支援,ogre也不例外。儘管網上一些討論把ogre換裝說得諱莫如深,實際上它還是很簡單的。早在05年提及這個問題時,sinbad也只是說了一句 use entity shareskeletoninstancewith 遊戲...

Ogre3D 實現角色換裝

乙個角色由多個模型組成,這些模型掛在同乙個主節點上,由同乙個骨骼動畫控制著。換裝就是剔除或新增一些模型,如果只是刪增模型,那樣只可以實現一起平移和旋轉。因為裝備,如衣服都是要和身體一起發生形變的。所以,模型之間要統一這些發生形變的方式,那就是骨骼。分類 1.屬於掛接物體,不屬於換裝範疇,建立乙個節點...