日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

OGRE实现纸娃娃系统

發布時間:2023/12/20 windows 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OGRE实现纸娃娃系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先站在巨人肩上看看紙娃娃。

首先是WOW

WOW中裝備有分幾種,

武器,護肩,頭盔,盾牌,箭袋是掛接在關鍵骨骼上的

OGRE的話就是用Entity::attachObjectToBone() ,這個函數實現。

沒什么難點。有個問題就是需要找到身體某個部分關鍵骨骼的名字,比如要掛接在肩部,就必須知道肩部關鍵骨骼的名字。

用WOW Model Viewer 導出的.Mesh并沒有包含關鍵骨骼的信息(所有骨骼的名稱都是按順序排列的數字),要自己找。

這里有魔獸世界M2文件的定義

http://www.madx.dk/wowdev/wiki/index.php?title=M2/WotLK#Bones

根據這個寫了個程序分析關鍵骨骼。整出一個關鍵骨骼名稱列表。

下面是女血精靈的:

一個27個關鍵骨骼

骨骼含義 關鍵骨骼名稱

ArmL 28
ArmR 29
ShoulderL 19
ShoulderR 22
SpineLow 2
Waist 3
Head 27
Jaw 41
IndexFingerR 72
MiddleFingerR 73
PinkyFingerR 75
RingFingerR 74
ThumbR 71
IndexFingerL 67
MiddleFingerL 68
PinkyFingerL 70
RingFingerL 69
ThumbL 66
$BTH 140
$CSR 154
$CSL 153
_Breath 139
_Name 86
_NameMount 89
$CHD 141
$CCH 133
Root 1

如果要把武器掛接到手上,代碼如下

Ogre::TagPoint* tag = mEntity->attachObjectToBone("75", entity);

mEntity是人物模型實體,entity是武器模型實體,"75"是無名指的骨骼名稱。

Ogre::TagPoint 繼承自Ogre::Node,對tag進行操作就可以對掛接到物體進行位移,旋轉。

WOW中其他裝備都是用貼圖實現。

如圖,長筒靴對人物小腿的幾何形狀有影響。

每個人物模型針對長筒靴,手套這類裝備都做了額外一些模型,當發現是長筒靴時,小腿的模型就會切換成長筒靴模型,然后對小腿進行貼圖。

現在分析天龍八部和火炬之光,

天龍八部和火炬之光的avatar系統與WOW不同,畢竟用來OGRE,一些方法都是貼近OGRE。

天龍八部中武器也是掛接在關鍵骨骼上,而頭盔,衣服則是做了額外的模型,然后與人物模型共享骨骼。

用OGRE::shareSkeletonInstanceWith()這個函數實現。

shareSkeletonInstanceWith并不會改變你模型的坐標,美工導出時模型坐標是什么,顯示時坐標是什么。所以導出模型時就必須對裝備的坐標進行調整,帽子就要調整到頭部的高度。

這種方法有個缺點,如果人物從成人變成一個蘿莉,裝備的坐標就不相符了。

最后是RealXtend的Avatar系統。

針對上面所說的缺點,realXtend 中的 Avatar系統提供了一個比較好的解決方案。

Ogre::TagPoint* weaponTag = mEntity->attachObjectToBone("75", weaponEntity);

以上我們掛接武器的方法。

clothEntity->shareSkeletonInstanceWith(humanEntity);

以上是裝備共享骨骼的方法。

由于Ogre::TagPoint繼承自Node,而Ogre::SceneNode也繼承自Node。

因此定義一個Node* 的列表

std::vector<Node*> attachmentNodes

sceneNode->attachObject(clothEntity)

attachmentNodes->push_back(sceneNode)

attachmentNodes->push_back(weaponTag)

以上步驟,將武器和裝備都添加到attachmentNodes列表中。

通過對attachmentNodes操作即可對所有掛接到模型上的物體進行位移,旋轉,或者縮放。

最終成果

Avatar系統完善以后再發布代碼

總結

以上是生活随笔為你收集整理的OGRE实现纸娃娃系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。