LV. 13
GP 11

【心得】HDT-PE裝備轉HDT-SMP到SE上使用

樓主 Xing sdde123123
GP39 BP-

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

這篇的目的是想要拋磚引玉

(還有感謝我加入上古以來得到的幫助)
圖多手機板注意流量

希望若是有興趣也非3D建模專業且苦無一同討論的朋友,歡迎一起研究SE版 SMP物理化這塊

(當然我的技術也有許多的不成熟,希望也有擅長物理化服裝的前輩能幫助我釐清)

先丟一張淺白的gif跟大家介紹 SMP 物理 (如果你不單單只想讓身體有乳搖和碰撞,也要想讓披風,頭髮,裙子搖擺起來,SMP是目前在SE版全面物理的要件)

飲水思源,
文章開始之前先容許我感謝一下 :
首先感謝 風煞 大幫助我釐清書寫XML的一些問題和回信指路,
以及myps2 在我跨入裝備世界初期給予的回覆 ,
的這些文章
還有上古群裡的大大們

前提:並不保證所有LE版的PE物理裝備能轉,但有些情況的就不行(文章內會說明)



HDT-SMP三件套
這篇需要的工具有:NifSkope,  SSE NIF Optimizer,    notepad++
以及要有一些bodyslide的基礎 與 隨便找一件帶有virtualground 的SMP裝備
以上工具教學,版上大大都有寫教學文,我只為大家指路,還請各位紳士們能去參考前輩的文章

正文開始

1.初步處理與判別(何種HDT-PE物理裝備可以轉)

當從LE版載下物理裝備時,先拆包打開mesh資料夾裡的nif模型檔,用nifskope去查看想物理化的部分有沒有被添加了額外骨骼,例如點選模型 左邊看到 披風Cloak 的NiTrishape
下拉 觀察有沒有新的骨骼NiNode
,有的話就可以先用SSE NIF Optimizer 去刷一遍 貼圖也要記得檢查有沒有問題
,拔掉XML檔,進遊戲測試看看是否 會正常裝備在人物身上,
此為成功(左邊角色背上披風出現在正確位置)
而若是沒有
且遇到了 材質無限延伸裝備與身體倒轉 (這就是前提所講的特殊情形)
(例如(倒轉已可嘗試另一種方法,請到6樓)

(拉伸已可解決,請到15樓)
那殘念,這些裝備 以我這篇所理解是沒辦法去物理化的,只能另外用BS刪除原本骨骼去然後去給新骨骼才有辦法正常顯示在遊戲中,詳細參考版上大大BS的文章,或加群來問我(連結在三樓底)


目錄 樓層
2.給予碰撞體,與更改NistringExtraData 2 點我
3.書寫smp的流程 3 點我
特殊狀況相關(解決倒轉問題) 6 點我
特殊狀況相關(解決網格mesh超過80骨骼引起的拉伸) 15 點我
入門簡單版(只有搖動)的xml書寫 10 點我
深度進階版(淺談SMP碰撞) 14 點我
(工具)C大BodySlide and Outfit Studio - v4.7.1 SE中文化 點我

39
-
LV. 13
GP 11
2 樓 Xing sdde123123
GP18 BP-

2.給予碰撞體,與更改NistringExtraData


碰撞體簡單來講為了讓裝備不想要有穿模情形發生
(也就是裝備不想跑進身體裡面,雙馬尾動一動結果和腦袋融合一起這種神奇情形),
所以要給予這些裝備假體,
在這步驟我通常都找本身MOD附帶的身體去作複製,因為通常不會有骨骼對應不上的情形發生(因為nifskope的嚴格複製貼上機制),不然若是出現
就必須參考

找到同件裝備MOD的身體做為碰撞體
右鍵copy branch
選到根結點NiNode 右鍵paste branch
同理virtualground 也是
給好碰撞體後更改為NistringExtraData
有些是NistringsExtraData(多一個s)的可以利用convert去轉
點選txt
把HDT Havok Path 改為HDT Skinned Mesh Physics Object
和要讀取SMP文檔的xml路徑設定好,完成存檔






微更新

提供一些碰撞模型下載
內含
地板
頭模
腿部
胸部
身體
手部

以上模型都能用BS改成你想要的身形,不管CBBE 或UNP都可以









裝備載點在D群(要練到3等才看的到)


18
-
LV. 13
GP 11
3 樓 Xing sdde123123
GP20 BP-

3.書寫smp的流程(可以複製一遍再去修改)更新入門簡單版請到10樓

以下名詞都是我用google翻譯和加上本身理解所發想,若有3D建模專業,覺得我用的詞不夠精準,和誤解,請一定留言我,我會更改
也請一定要 開啟自己的 nif檔去對照寫

1.開頭檔宣告

請看底下留言(不知道為甚麼我放了這段宣告,文章都會被砍斷ORZ)

2.宣告地面碰撞體

<per-triangle-shape name="VirtualGround">               ----碰撞體Value的宣告----
<margin>0.5</margin>                                                   ---碰撞的距離-----       
<priority>-2147483648</priority>               ---- 優先度,介於[-2147483648, 2147483647](地板通常最低)--
<prenetration>10</prenetration>
<tag>ground</tag>                                  ----標籤(用來簡寫Value值例如VirtualGround縮寫成ground)----
</per-triangle-shape>


3.宣告剛體(就是不允許他亂動的骨骼節點)

打開 披風Cloak的BsTrishape   NPC 開頭那些 用來把身體的骨骼節點都鎖住
<bone name="NPC L Breast01"/>
<bone name="NPC R Breast01"/>
<bone name="NPC L Calf01"/>
<bone name="NPC R Calf01"/>
  <bone name="NPC L Thigh01"/>
<bone name="NPC R Thigh01"/>
<bone name="NPC L Breast"/>
<bone name="NPC R Breast"/>
<bone name="NPC R Calf [RClf]"/>
<bone name="NPC L Calf [LClf]"/>
  <bone name="NPC Spine [Spn0]"/>
<bone name="NPC Spine1 [Spn1]"/>
<bone name="NPC Spine2 [Spn2]"/>
<bone name="NPC Pelvis [Pelv]"/>
<bone name="NPC R Thigh [RThg]"/>
<bone name="NPC L Thigh [LThg]"/>
<bone name="NPC R Butt"/>
<bone name="NPC L Butt"/>
<bone name="NPC Belly"/>
<bone name="NPC Neck [Neck]"/>
<bone name="NPC Head [Head]"/>
<bone name="NPC R Clavicle [RClv]"/>
<bone name="NPC R UpperArm [RUar]"/>
<bone name="NPC R Forearm [RLar]"/>
<bone name="NPC R Hand [RHnd]"/>
<bone name="NPC R ForearmTwist1 [RLt1]"/>
<bone name="NPC R ForearmTwist2 [RLt2]"/>
<bone name="NPC R UpperarmTwist1 [RUt1]"/>
<bone name="NPC R UpperarmTwist2 [RUt2]"/>
<bone name="NPC L Clavicle [LClv]"/>
<bone name="NPC L UpperArm [LUar]"/>
<bone name="NPC L Forearm [LLar]"/>
<bone name="NPC L Hand [LHnd]"/>
<bone name="NPC L ForearmTwist1 [LLt1]"/>
<bone name="NPC L ForearmTwist2 [LLt2]"/>
<bone name="NPC L UpperarmTwist1 [LUt1]"/>
<bone name="NPC L UpperarmTwist2 [LUt2]"/>
<bone name="NPC L Pauldron"/>
<bone name="NPC R Pauldron"/>
(這我是自己偷懶所以直接複製貼上把所有身體骨骼鎖住,可以不必像我這樣)


4.身體碰撞體宣告(如果沒有可以不用宣告,例如耳環那些小物件不太需要和其他東西造成碰撞)

<per-triangle-shape name="body cloak">
<margin>1</margin>
<priority>0</priority>
<prenetration>2</prenetration>                      ----(這項只有per-triangle-shape能有,用處為
here was probably meant to be bullets "penetration" property原文照搬,我也不清楚是啥)----
<tag>body cloak</tag>
<no-collide-with-tag>body</no-collide-with-tag>             ----(表示不與標籤名XXX的產生碰撞)---
<no-collide-with-tag>body cloak</no-collide-with-tag>  ---(基本上碰撞體自身最好別有碰撞發生)---
<no-collide-with-tag>ground</no-collide-with-tag>
<no-collide-with-tag>body skirt</no-collide-with-tag>
</per-triangle-shape>
(SMP物理若沒有表明不和誰碰撞,默認為都可以碰撞)


5.宣告錨點(就像甩繩子一般你要抓住繩的一點才可以甩動)

打開 NPC 的NiNode 找到披風的特殊骨骼 錨點基本上是 XXXX01 或 XXX 1
<bone name="Cloak L 1"/>
<bone name="Cloak 1"/>
<bone name="Top LL 1"/>
<bone name="Colar L 1"/>
<bone name="Colar R 1"/>
<bone name="Top RR 1"/>
<bone name="Top RL 1"/>
<bone name="Top LR 1"/>
<bone name="SkirtBBone01"/>


6.給予物理骨骼的基本物理参数

<bone-default>                                               ----影響下面骨骼,不影響上面----
<mass>2</mass>                                                        -----質量---
<inertia x="20" y="20" z="20"/>                           ----貫量(通常我都沒改)---
<centerOfMassTransform>                   ----這我也不清楚,詳細請看以上網址,但也通常固定這樣的值----
  <basis x="0" y="0" z="0" w="1"/>
  <origin x="0" y="0" z="0"/>
</centerOfMassTransform>
<linearDamping>0.5</linearDamping>                  ---骨骼節點線性加速度介於(0.1)之間---
<angularDamping>0.5</angularDamping>             ---骨骼節點角加速度介於(0.1)之間---
<friction>0</friction>                                                   ---骨骼節點摩差係數---
<rollingFriction>0</rollingFriction>                             ---骨骼節點旋轉摩差係數---
<restitution>0</restitution>                                                  --反彈係數--
</bone-default>


7.物理骨骼描述(基本上下拉錨點就看的到)

<bone name="Cloak L 2"/>
<bone name="Cloak 2"/>
<bone name="Top LL 2"/>
<bone name="Colar L 2"/>
<bone name="Colar R 2"/>
<bone name="Top RR 2"/>
<bone name="Top RL 2"/>
<bone name="Top LR 2"/>
<bone name="SkirtBBone02"/>

<bone name="Cloak L 3"/>
<bone name="Cloak 3"/>
<bone name="Top LL 3"/>
<bone name="Top RR 3"/>
<bone name="SkirtBBone03"/>

<bone name="Cloak L 4"/>
<bone name="Cloak 4"/>
<bone name="Top LL 4"/>
<bone name="Top RR 4"/>

<bone name="Cloak L 5"/>
<bone name="Cloak 5"/>

<bone name="Cloak L 6"/>
<bone name="Cloak 6"/>

<bone name="Cloak L 7"/>
<bone name="Cloak 7"/>

<bone name="Cloak L 8"/>
<bone name="Cloak 8"/>
(一層一層往下宣告)


8.約定物理骨骼動態參數

<generic-constraint-default>                                                                       
    <frameInB>                                                     ----(A或B有時候不一定,還是看外國原文吧)-----
      <basis x="0" y="0" z="0" w="1"/>           ----(這數值我也不常看過有人改動,所以詳細還是看原文)---
      <origin x="0" y="0" z="0"/>
    </frameInB>
    <useLinearReferenceFrameA>false</useLinearReferenceFrameA>
    <linearLowerLimit x="0" y="0" z="0"/>               -----線性約定下界(詳細往下有說明)---
    <linearUpperLimit x="0" y="0" z="0"/>              -----線性約定上界(約定的下界不能大於上界)---
    <angularLowerLimit x="-0.1" y="-0.7" z="0"/>       -----旋轉約定下界(詳細往下有說明)---
    <angularUpperLimit x="0.1" y="0.7" z="0"/>          -----旋轉約定上界(詳細往下有說明)---
    <linearStiffness x="0" y="0" z="0"/>                              -----線性彈簧係數----
    <angularStiffness x="0" y="0" z="0"/>                            -----角彈簧係數----
    <linearDamping x="0" y="0" z="0"/>                             -----線性彈簧阻尼----
    <angularDamping x="0" y="0" z="0"/>                            -----彈簧阻尼----
    <linearEquilibrium x="0" y="0" z="0"/>
    <angularEquilibrium x="0" y="0" z="0"/>
  </generic-constraint-default>
(我基本只改動線性和旋轉的約定上下界)
(且這大概是會明顯看得出影響的地方,有興趣請往下看)
1:增加搖動幅度: 請看到這兩行:
<linearLowerLimit x=“0” y=“-5” z=“-10”/>
<linearUpperLimit x=“0” y=“2” z= “10”/>
Lower(下界)中z軸的負值越大,向上搖動的幅度越大
Upper(上界)中z軸的正值越大,向下搖動的幅度越大
2:增加搖動彈性: 請注意這三行:
<linearStiffness x=“246.74” y=“246.74” z=“246.74”/>
<linearDamping x=“0.4674” y=“0.4674” z=“0.4674”/>
<linearBounce x =“0.2” y=“0.4” z=“0.7”/>
Stiffness中值越大代表彈性越大(彈簧越硬),但是相對的搖動的幅度會減小——玩過彈簧都知道彈簧越硬,雖然彈性越強,但是相同的力彈性形變越小Damping中值越大,在運動過程中的運動衰減越厲害,damping值越小,搖得越久,請不要設為0,不然一搖就不會停
Bounce中值代表越界回彈時速度的倍率
3:調整搖動的起始位置: 請注意這一項:
<linearEquilibrium x=“0” y=“-5” z=“-6”/ >
坐標參考修改幅度時的坐標:
x代表左右,y代表前後,z代表上下,同時因為父子級設定的關係,在這裡,z的值越小,胸越挺(胸的搖動起始位置越高),y的值越小胸越突出(胸的搖動初始位置越前)某種程度上這兩個參數可以增大R量
以上節錄(9DAM 伊佐那社 大)


9.約定物理骨骼描述(訣竅就是從錨點開始一個一個把骨骼連接起來)

<constraint-group>
<generic-constraint bodyA="Cloak L 2" bodyB="Cloak L 1"/>
<generic-constraint bodyA="Cloak L 3" bodyB="Cloak L 2"/>
<generic-constraint bodyA="Cloak L 4" bodyB="Cloak L 3"/>
<generic-constraint bodyA="Cloak L 5" bodyB="Cloak L 4"/>
<generic-constraint bodyA="Cloak L 6" bodyB="Cloak L 5"/>
<generic-constraint bodyA="Cloak L 7" bodyB="Cloak L 6"/>
  <generic-constraint bodyA="Cloak L 8" bodyB="Cloak L 7"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Cloak 2" bodyB="Cloak 1"/>
<generic-constraint bodyA="Cloak 3" bodyB="Cloak 2"/>
<generic-constraint bodyA="Cloak 4" bodyB="Cloak 3"/>
<generic-constraint bodyA="Cloak 5" bodyB="Cloak 4"/>
<generic-constraint bodyA="Cloak 6" bodyB="Cloak 5"/>
<generic-constraint bodyA="Cloak 7" bodyB="Cloak 6"/>
    <generic-constraint bodyA="Cloak 8" bodyB="Cloak 7"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Top LL 2" bodyB="Top LL 1"/>
<generic-constraint bodyA="Top LL 3" bodyB="Top LL 2"/>
<generic-constraint bodyA="Top LL 4" bodyB="Top LL 3"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Top RR 2" bodyB="Top RR 1"/>
<generic-constraint bodyA="Top RR 3" bodyB="Top RR 2"/>
<generic-constraint bodyA="Top RR 4" bodyB="Top RR 3"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="SkirtBBone02" bodyB="SkirtBBone01"/>
<generic-constraint bodyA="SkirtBBone03" bodyB="SkirtBBone02"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Colar L 2" bodyB="Colar L 1"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Colar R 2" bodyB="Colar R 1"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Top RL 2" bodyB="Top RL 1"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Top LR 2" bodyB="Top LR 1"/>
</constraint-group>


10.其他碰撞體宣告(per-vertex-shape)

(披風,頭髮裙子這類主要想讓他們產生碰撞的)
<per-vertex-shape name="cloak">
<margin>1</margin>                             -----在每個骨骼節點生成的碰撞球的半徑大小,不可超過2.5-----
<priority>1</priority>                                                    -----優先度-----
<tag>cloak</tag>
<no-collide-with-tag>cloak</no-collide-with-tag>         ---(基本上碰撞體自身最好別有碰撞發生)---
<no-collide-with-tag>hair</no-collide-with-tag>
<no-collide-with-tag>body</no-collide-with-tag>
<no-collide-with-tag>body skirt</no-collide-with-tag>
(----這些weight-threshold bone看看就好我也是不太清楚,但沒加影響好像也不大------)
<weight-threshold bone="Cloak 1">1</weight-threshold>       
<weight-threshold bone="Top LL 1">1</weight-threshold>
<weight-threshold bone="Top LR 1">1</weight-threshold>
<weight-threshold bone="Cloak L 1">1</weight-threshold>
<weight-threshold bone="Colar L 1">1</weight-threshold>
<weight-threshold bone="Colar R 1">1</weight-threshold>
<weight-threshold bone="Top RR 1">1</weight-threshold>
<weight-threshold bone="Top RL 1">1</weight-threshold>
<weight-threshold bone="Cloak 2">0.5</weight-threshold>
<weight-threshold bone="Cloak 3">0.5</weight-threshold>
<weight-threshold bone="Cloak 4">0.5</weight-threshold>
<weight-threshold bone="Cloak 5">0.5</weight-threshold>
<weight-threshold bone="Cloak 6">0.5</weight-threshold>
<weight-threshold bone="Cloak 7">0.5</weight-threshold>
<weight-threshold bone="Cloak 8">0.5</weight-threshold>
<weight-threshold bone="Cloak L 2">0.5</weight-threshold>
<weight-threshold bone="Cloak L 3">0.5</weight-threshold>
<weight-threshold bone="Cloak L 4">0.5</weight-threshold>
<weight-threshold bone="Cloak L 5">0.5</weight-threshold>
<weight-threshold bone="Cloak L 6">0.5</weight-threshold>
<weight-threshold bone="Cloak L 7">0.5</weight-threshold>
<weight-threshold bone="Cloak L 8">0.5</weight-threshold>
<weight-threshold bone="Top LL 2">0.5</weight-threshold>
<weight-threshold bone="Top LL 3">0.5</weight-threshold>
<weight-threshold bone="Top LL 4">0.5</weight-threshold>
<weight-threshold bone="Top RR 2">0.5</weight-threshold>
<weight-threshold bone="Top RR 3">0.5</weight-threshold>
<weight-threshold bone="Top RR 4">0.5</weight-threshold>
<weight-threshold bone="Top LR 2">0.5</weight-threshold>
<weight-threshold bone="Top RL 2">0.5</weight-threshold>
<weight-threshold bone="Colar L 2">0.5</weight-threshold>
<weight-threshold bone="Colar R 2">0.5</weight-threshold>
</per-vertex-shape>


11.結尾(恭喜!!!才怪,要進遊戲除錯了XDDD)

</system>

辛苦各位看到這邊,如果有問題歡迎加入,上古群來一起討論https://discord.gg/54PaGaj
這邊就放一些 成效給大家看
群裡也會放出一些我改動的裝備
然後還是希望能點燃有想研究裝備MOD的熱情,(其實是我也想當伸手黨)
謝謝各位
20
-
LV. 12
GP 146
4 樓 不要說英文誰看得懂阿 tottoko
GP1 BP-
※ 引述《sdde123123 (Xing )》之銘言

1.開頭檔宣告

> 請看底下留言(不知道為甚麼我放了這段宣告,文章都會被砍斷ORZ)
因為有一段網址

不是在原始碼模式下編輯
系統會把他剪掉
<?xml version="1.0" encoding="UTF-8"?> <system xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="description.xsd">
1
-
LV. 13
GP 43
5 樓 Xing sdde123123
GP3 BP-

小更新

(算是發文得到的回報嗎?,重看了一遍台客人生 衣服的偷龍轉鳳)
找到了一種解決第一篇的HDT裝備倒轉的方法
而不需要透過重新給骨骼權重的方式,這樣就不需要破壞作者給定的特殊骨骼
而為PE轉成SMP的路徑造了新的連結方式

老手如果看到這大概就能知道我說的解決方法
但以統計學觀點這並不能說是成功解決
我只能說以我遇到的HDT倒轉,我都有成功用此方法解決(雖然樣本數才3......)

因為太興奮,想說先佔個樓(雖然這真的蠻冷門的,都沒人來找我討論XDD,算了想說這串就當個學習筆記)
為老手給個方向,晚點再整理一下照片流程放上解決方法

就能把Dint大神最近放出的新作,在不需要3DMAX情況下成功轉成SMP SE可用
(也為LE的人指路)
寫到這,我真的很感謝這些作物裡衣服的大神,也很慚愧偷偷轉SMP的自己
只能督促自己,別把這當成用來利益交換的手段,
(也想到水聿兒大寫過一篇關於作裝備的心情文,
再..再...再轉一套就好,最近開上古都是這心情ㄏㄏ,結果我the forgotten city的名偵探柯南當到一半....)

所以想獲得這套的人用在SE上的新手,
希望來加群(因為板規好像不能放裝備載點?),順便讓我看一下您有對SMP物理化的熱情吧!(一定沒人XDD)

老手大大們就不用了,當成我的回禮一點敬意
物理參數上我真的不是很會調,
所以物理參數部分我真的很想找人討論R
(對了加群要練到三等才會開啟新世界喔) 最近新加群的都很快就退(不知道是啥原因?)



3
-
LV. 13
GP 43
6 樓 Xing sdde123123
GP4 BP-

特殊狀況相關(解決倒轉問題)
注意第一人稱模型顯示
問題(感謝水聿兒 大 發現)

若要處理請先找一個沒有問題的骨骼架或是單純只含有NPC Node的骨骼


核心就是 台客人生 的先長骨後長肉
1.用nifskope 開啟兩個 視窗(nifskope允許同一個nif這麼做)
2.照 台客人生 大大的文章 一個nif檔 包括了骨骼(NINode) 與 網格(BSTrishape) (所謂的骨頭和肉)
   重新的給骨骼還有肉

我的思路就是:
既然 裝備倒轉極有可能是因為骨格位置不對,
所以我把一個視窗(稱A視窗)的骨骼刪除
再從另一視窗(B視窗)一個一個建立骨骼 然後在貼肉上去

而這套裝備比較特殊且方便的地方是,只要我把骨骼根節點拉成從NPC這節點開始,
(其實大部分沒倒轉的HDT裝備我看都是從NPC這節點開始而不是從skeleton.nif,所以我極度懷疑是,Cam3這東西搞軌)

開始步驟(刪掉A視窗整串骨骼)

到B視窗下拉找到skeleton.nif之下的NPC節點然後複製

到A視窗最上層0NiNode右鍵貼上 (骨骼建立完成)

再把B視窗的網格(肉,BSTriShape)貼上去,
且移除A視窗的原有的網格(
肉,BSTriShape)後存檔

比較一下A和B視窗完成後
有發現到B視窗骨骼我把NPC拉上來當父節點

這樣就可以進遊戲測試了

這麼做的好處是:
你不需要用BS重新賦予骨骼然後才能正常顯示(而且BS賦予骨骼很麻煩 要手動自己刷,這痛苦ORZ)

最重要的就是不必要去刪除物理骨骼(可以轉SMP了),就可以顯示在遊戲中

希望這有幫助到,從LE看到好看的 HDT裝備的人想轉到SE的人,另一種不需要重新給定骨骼的方法
也希望有人能告訴我Cam3這是甚麼XD(我都把它刪除掉)

最後
根據群裡的善心人告知 SMP 會有無限拉長延伸的問題(一樓的特殊狀況)
是因為SMP在每個網格中有骨格數量限制(超過80個還是100個就會這樣)

所以解決方式有可能要把網格(也稱為肉,BSTrishape)一分二才行
但我不會...........
希望有大大能幫助我........Help!!!
  
還有物理參數更難


第一人稱模型顯示問題(感謝水聿兒 大 發現)
其實大部分都是dint大神的裝備會有的問題
在處理倒轉的時候若照已上方法做只能解決第三人稱的模型
但在第一人稱時,手臂,手環,手套等等卻會因為dint她使用的骨架
而產生無法顯示模型的問題發生
但上面流程我不會因此刪除是因為,核心仍然是台客人生大大的 先長骨後長肉
所以要處理這些模型,也是要先找一副正常骨架,並把肉貼上去,就能解決
以下我會提供手臂到手指的拆散骨架並操作一遍給各位看

1st fixhand(裡面包含手臂到手的網格,不需要請自己刪除)
  • 1.打開你找到的正常骨架(或我提供的)並刪除多餘的其他網格


  • 2.打開手套等等有問題的模型,並把網格複製並貼到另一正常骨架上


  • 3.儲存與測試


    前後對比一下


大概4這樣
P.S.我在小屋的檔案經我檢查都沒有問題

4
-
LV. 13
GP 43
7 樓 Xing sdde123123
GP5 BP-
深夜福利回饋
SE SMP 限定
(一樓的那張Gif)
(請包函我物理參數還沒設定到很好,喜歡的人再載吧

裡面只有披風和皮帶我改動的mesh檔,這樣應該不算放原檔吧,
還有我也做了BS檔
所以請找原檔下載後在覆蓋我的檔案)

期限就一天吧
P.S. 下載後別拿來做金錢利益交換,畢竟移植模型的不是我
是 Dint大神!!
5
-
LV. 13
GP 649
8 樓 D.vahkiin tony4481
GP1 BP-

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

請問大大,假如想要讓胸部與胸前的金屬鎧甲撞到後彈回
是將鎧甲的node設成鋼體、胸部為碰撞體嗎?
(這是在HDT-PE出來前我做的,有時候會有胸部撞出來的狀況...
若是可以讓它們對撞就可以解決這問題了)
1
-
LV. 14
GP 55
9 樓 Xing sdde123123
GP1 BP-
※ 引述《tony4481 (D.vahkiin )》之銘言
> 請問大大,假如想要讓胸部與胸前的金屬鎧甲撞到後彈回
> 是將鎧甲的node設成鋼體、胸部為碰撞體嗎?
> 在新視窗開啟圖片
> (這是在HDT-PE出來前我做的,有時候會有胸部撞出來的狀況...
> 若是可以讓它們對撞就可以解決這問題了)

不好意思現在才看到你的訊息,HDT-PE我就沒有摸索了,因為我現在只有玩SE版的上古
而以我理解如果你要用SMP物理
雖然我自己沒嘗試過(頂多只有讓手和XX撞胸而以)
想讓胸部撞盔甲,應該是設定兩個都是碰撞體,讓他們互相撞

但我先打個預防針,
在於用SMP實現碰撞困難的點,
參數部分不熟悉的話很難調教參數,所以就算碰撞體都建構好了,
還是也有可能出現,遊戲中歐派會跳出來
嚴重甚至
歐派會像彈跳球一般不斷的在裝甲裡頭彈跳,不會停止喔









以下是留言講到關於SMP的碰撞和搖的 "心理建設"?

可是身體物理SMP的參數卻有1348 行

看似很難
但其實如果要實現你裝備碰撞到胸部
應該只要複製這些參數然後去添加幾行關於碰撞體的描述就可以
如果真的想寫再來私信我,我再把檔案傳給你改
1
-
LV. 14
GP 55
10 樓 Xing sdde123123
GP6 BP-

更新好入門的簡單版(只有搖動)的xml書寫

十分鐘你也能讓衣服動起來!!?

我拿這件裙子當作例子
每段敘述意義還是請詳閱三樓

開頭檔<?xml version="1.0" encoding="UTF-8"?>...........那串

剛體宣布:
<bone name="NPC Pelvis [Pelv]"/>

錨點宣布:
<bone name="Lower2B 1"/>
<bone name="Lower1BR 1"/>
<bone name="Lower1BC 1"/>
<bone name="Lower1BL 1"/>

骨骼基本物理性質:
<bone-default>
<mass>1</mass>
<inertia x="17" y="17" z="17" />
<centerOfMassTransform>
<basis x="0" y="0" z="0" w="1" />
<origin x="0" y="0" z="0" />
</centerOfMassTransform>
<linearDamping>0.98</linearDamping>
<angularDamping>0.6</angularDamping>
<friction>0</friction>
<restitution>0</restitution>
</bone-default>

連接物理骨骼:
<bone-default>
<margin-multiplier>0.3</margin-multiplier>
</bone-default>

<bone name="Lower2B 2"/>
<bone name="Lower1BR 2"/>
<bone name="Lower1BC 2"/>
<bone name="Lower1BL 2"/>

<bone-default>
<margin-multiplier>0.5</margin-multiplier>
</bone-default>

<bone name="Lower2B 3"/>
<bone name="Lower1BR 3"/>
<bone name="Lower1BC 3"/>
<bone name="Lower1BL 3"/>

<bone-default>
<margin-multiplier>0.7</margin-multiplier>
</bone-default>

<bone name="Lower2B 4"/>

物理骨骼基本約定:
<generic-constraint-default>
<frameInB>
<basis x="0" y="0" z="0" w="1" />
<origin x="0" y="0" z="0" />
</frameInB>
<useLinearReferenceFrameA>false</useLinearReferenceFrameA>
<linearLowerLimit x="0" y="0" z="0" />
<linearUpperLimit x="0" y="0" z="0" />
<angularLowerLimit x="-0.1" y="-0.1" z="-0.1" />
<angularUpperLimit x="0.1" y="0.01" z="0.1" />
<linearStiffness x="0" y="0" z="0" />
<angularStiffness x="0" y="0" z="0" />
<linearDamping x="0" y="0" z="0" />
<angularDamping x="0" y="0" z="0" />
<linearEquilibrium x="0" y="0" z="0" />
<angularEquilibrium x="0" y="0" z="0" />
</generic-constraint-default>

連結物理骨骼約定:
<constraint-group>
<generic-constraint bodyA="Lower2B 2" bodyB="Lower2B 1"/>
<generic-constraint bodyA="Lower2B 3" bodyB="Lower2B 2"/>
<generic-constraint bodyA="Lower2B 4" bodyB="Lower2B 3"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Lower1BR 2" bodyB="Lower1BR 1"/>
<generic-constraint bodyA="Lower1BR 3" bodyB="Lower1BR 2"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Lower1BC 2" bodyB="Lower1BC 1"/>
<generic-constraint bodyA="Lower1BC 3" bodyB="Lower1BC 2"/>
</constraint-group>

<constraint-group>
<generic-constraint bodyA="Lower1BL 2" bodyB="Lower1BL 1"/>
<generic-constraint bodyA="Lower1BL 3" bodyB="Lower1BL 2"/>
</constraint-group>

結尾:
</system>


沒錯就這樣衣服就會生動地擺動了很簡單吧
前(僵硬)
後(比較生動)
6
-
LV. 24
GP 76
12 樓 stone.shr stone471
GP4 BP-
首先感謝樓主的分享

關注此帖好一陣仔了,直到看到近日的簡易修改版,才真的找了一個自覺簡單的物件來嘗試,搗鼓了好一陣子後,真的成功了。
現在有點概念了,雖然還很多不明確和不清楚,不過能動就好了,哈哈。

開心~

如下影片右邊的NPC,背後的披風轉自傳奇版。
4
-
LV. 24
GP 82
13 樓 stone.shr stone471
GP5 BP-
今天又自己找了Dint 的 Nier Automata v1.5 來修改。

1.先轉好要用的身形 UNPB。
2.然後跑一次 SSE NIF Optimizer,移除舊版xml文件。
3.進遊戲後,發現裝備都往下掉,如首篇提到的,比較麻煩的狀況。
4.重新研究了一下本樓文件,並嘗試重新建立骨骼然後長肉,重新生長後,進遊戲可以正常穿上裝備了, 哈哈。
5.再來就是裙子的部分,有SMP,比對了一下N網上 CBBE SMP 1.6版 xml發現骨骼都一樣可以直接使用,就直接搬過來試,1.7骨骼就修改過不一樣了。
6.再來頭髮的部分,看了半天還比對了暈倒的SMP,但髮型的骨骼是獨立放射狀,不像一般的一根連一根,所以到這邊就不會修改了

本次主要是知道了甚麼是去骨,長骨,去肉再生肉。最後還是放一下影片看效果。

5
-
LV. 14
GP 149
14 樓 Xing sdde123123
GP5 BP-

淺談SMP碰撞

以下影片微18請注意






再次重申我並非專業美術3D,文章一切都是我紳士魂燃燒所爬文而來

如有錯誤與誤解請見諒,並希望能留言讓我知道
並再次感謝各位閱讀



碰撞鎮樓影片




正文開始
以這件裙子的xml為範例

--以下部分xml重點節錄
:
....標頭檔(略)

<bone name="NPC L Breast01"/>
<bone name="NPC R Breast01"/>
<bone name="NPC L Calf"/>
........等等剛體宣告(略)

碰撞體 (triangle)宣告
<per-triangle-shape name="cobdy">
<margin>1</margin>
<priority>0</priority>
<shared>private</shared>
<prenetration>2</prenetration>
<tag>cobdy</tag>
<no-collide-with-tag>body</no-collide-with-tag>
<no-collide-with-tag>cobdy</no-collide-with-tag>
<no-collide-with-tag>ground</no-collide-with-tag>
<no-collide-with-tag>body skirt</no-collide-with-tag>
  
</per-triangle-shape>

物理骨骼的基本物理参数與約束宣告(略)
  <bone-default>
    <mass>1</mass>
    <inertia z='20' y='20' x='20'/>
    <centerOfMassTransform>
      <basis z='0' y='0' x='0' w='1'/>
      <origin z='0' y='0' x='0'/>
......................
  ...............等等(略)
  

碰撞體(vertex)宣告  
  
<per-vertex-shape name="1Cuirass1">
<margin>0.3</margin>
<priority>1</priority>
<shared>private</shared>
<tag>CU1</tag>
<no-collide-with-tag>CU1</no-collide-with-tag>
<no-collide-with-tag>CU2</no-collide-with-tag>
<no-collide-with-tag>hands</no-collide-with-tag>

<no-collide-with-bone>NPC L Forearm [LLar]</no-collide-with-bone>
<no-collide-with-bone>NPC R Forearm [RLar]</no-collide-with-bone>
<no-collide-with-bone>NPC L ForearmTwist1 [LLt1]</no-collide-with-bone>
<no-collide-with-bone>NPC R ForearmTwist1 [RLt1]</no-collide-with-bone>
<no-collide-with-bone>NPC L ForearmTwist2 [LLt2]</no-collide-with-bone>
<no-collide-with-bone>NPC R ForearmTwist2 [RLt2]</no-collide-with-bone>
<no-collide-with-bone>NPC L Calf [LClf]</no-collide-with-bone>
<no-collide-with-bone>NPC R Calf [RClf]</no-collide-with-bone>
<no-collide-with-bone>NPC L Pussy02</no-collide-with-bone>
<no-collide-with-bone>NPC R Pussy02</no-collide-with-bone>
<no-collide-with-bone>NPC R RearCalf [RrClf]</no-collide-with-bone>
<no-collide-with-bone>NPC L RearCalf [LrClf]</no-collide-with-bone>
<no-collide-with-bone>NPC L FrontThigh</no-collide-with-bone>
<no-collide-with-bone>NPC R FrontThigh</no-collide-with-bone>
<no-collide-with-bone>NPC L RearThigh</no-collide-with-bone>
<no-collide-with-bone>NPC R RearThigh</no-collide-with-bone>
<no-collide-with-bone>NPC Spine1 [Spn1]</no-collide-with-bone>
<no-collide-with-bone>NPC Spine2 [Spn2]</no-collide-with-bone>


<weight-threshold bone="NPC R Butt">3</weight-threshold>
<weight-threshold bone="NPC L Butt">3</weight-threshold>
     <weight-threshold bone="NPC L Thigh">3</weight-threshold>
<weight-threshold bone="NPC R Thigh">3</weight-threshold>
<weight-threshold bone="NPC Spine [Spn0]">3</weight-threshold>
<weight-threshold bone="NPC Pelvis [Pelv]">3</weight-threshold>


  <weight-threshold bone="_DBDODKAr_Cuirass_L1 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_L2 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_L3 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_L4 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R1 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R2 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R3 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R4 1">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_L1 2">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_L2 2">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_L3 2">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_L4 2">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R1 2">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R2 2">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R3 2">1</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_R4 2">1</weight-threshold>
  
   <weight-threshold bone="_DBDODKAr_Cuirass_Fr1 1">0.2</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr2 1">0.2</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr3 1">0.01</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr4 1">0.2</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr5 1">0.2</weight-threshold>
  
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr1 2">0.5</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr2 2">0.01</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr3 2">0.01</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr4 2">0.01</weight-threshold>
  <weight-threshold bone="_DBDODKAr_Cuirass_Fr5 2">0.5</weight-threshold>
  
  


</system>
今次分別來探討這些參數

  • <no-collide-with-
  • <shared>
  •    <weight-threshold bone
  • <margin>
  • <mass>
首先釐清一下HDT-SMP物理系統的碰撞,
當沒有明確禁止碰撞時,
HDT-SMP是預設任何碰撞體(即碰撞體宣告下的mesh)都能相互碰撞
因此需要用到
<no-collide-with-來禁止與其他碰撞體來產生不必要的碰撞

但另一個問題來了也許今天載了一個新物理裝備你想混搭穿
但總不可能每次載新的物理裝備
都要去編寫添加新的<no-collide-with去禁止不必要碰撞吧
簡單來講希望碰撞只作用再這個部分裝備nif,不影響到另一個混搭裝備nif

<shared>就是用來解決這問題的

<shared>private</shared>.<shared>internal</shared>.<shared>public</shared>
其中private“表碰撞體僅用於此XML(或nif),”internal“表示此角色,”public“表示所有角色。默認為“public”,如果您不希望它與其他角色交互作用,則應設置為“internal”或“private”


以下兩個影片簡單展示privatepublic
private

public
可以發現披風的mesh和另一角色手的mesh因為參數不同產生了不同作用
甚至良好設置就能達到鎮樓影片的結果
再加點想像力便能紳士力大發




接下來的參數說明節錄自第一篇的L網
並請搭配觀察裙子的SMP短片來直觀理解

<weight-threshold bone
表明蒙皮權重不超過該值的碰撞體不會對骨骼bone產生影響,用該值能有效減少不必要的碰撞體數量,並解決某些由蒙皮權重引發的不合理的碰撞衝突問題
(
個人想法:想像碰撞體mesh上方的無數小點都各有不同權重,每個點都會產生碰撞,此參數用來忽略某些點)

<margin>
在每個骨骼節點生成的碰撞球的半徑大小,不可超過2.5
(個人想法:想像碰撞體mesh上方的無數小點都以每個點來產生碰撞球,半徑越小,會直到很接近身體(另一個碰撞體)才會撞)

<mass>
質量
(質量越大,反應會越明顯誇張)

  1. 無添加<weight-threshold bone


  2. <mass>質量變大


  3. 此頁上面
    碰撞體(vertex)宣告   <per-vertex-shape name="1Cuirass1">內容的
    最終展示

碰撞的重要在於,良好的碰撞設置會給遊戲來更好的穩定
並減少CPU的消耗,
有時候遊戲會掉幀也有可能是場景產生了太多不必要碰撞
所以良好的xml書寫非常重要



最後福利時間
並且比較一下
CBPC和SMP的身體碰撞

CBPC
SMP


之後看大家是否有興趣我在寫如何設置身體碰撞和18X SMP
怎麼做HDT裝備的BS檔(畢竟懶癌發作而且還有另一個坑ORZ)
等不及的可以先去版上另一位紳士大神 myps2  的文章找他的身體SMP來研究

對了有載我D群的裝備各位,非常抱歉我會盡快添加回少掉的參數,在這邊先跟載的人說聲抱歉了

經另一位大紳士指正XD,我附上 銘言大的CBPC文章
CBPC是輕鬆設定且不耗太多效能就能達到效果的另一個身體物理
有興趣的也請到這篇文章拜讀
5
-
LV. 15
GP 179
15 樓 Xing sdde123123
GP6 BP-

特殊狀況相關(解決網格mesh超過80骨骼而引起的拉伸)


SE版的HDT物理裝備轉換
總算開啟新局面了哈哈哈.....

感謝D群友人蕭逸塵熱枕,他發現到
新版BS 4.7.1 能解決這問題
(我去N網看更新發現好像是修復了分離骨骼時可將新骨骼節點注入層次結構的正確位置)
我之前嘗試想說也許這方法與使用zap去裁減應該可行ORZ

他也在9dm 發了篇他的解決方式
網址在這 GOGO

我自己嘗試一遍後,的確原本在4.7.1之前這方法還不能分離骨骼
而偉大的BS團隊(再次讚嘆與感謝)
就在這版本
為我這不會用3DMAX只會nifskope與BodySlide的懶人得到了解決這方法

由於為了本篇的完善
(也能到9dm去看看)
我會在下面記錄此方法


首先請先去N網下載最新版本

BodySlide and Outfit Studio

SE 4.7.1

先為老手講概念:就是利用OS裡的分離頂點!!

正文開始
  • 首先刷好SSE NIF Optimizer並找到你的骨骼超過80個會拉伸的裝備nif

  • 打開新版Outfit Sttudio載入你的裝備NIF


  • 右邊將超過80以外的mesh網格隱藏,方便刷頂點


  • 點選顯示頂點方便你知道哪裡沒刷到或刷超過(綠色點就會顯示在網格上)


  • 利用遮蔽頂點工具去選擇你要分開的網格


  • 遮蔽好後右鍵右方視窗選擇分離頂點

  • 隨便命名它

  • 成功會發現後方網格單獨分割出來了

  • 完成後導出用NifSkope查看
可以比較一下前後我把有110個骨骼的網格mesh
(名稱是pc_female_avatar_regina_lower)
分割為4個網格mesh(分別為lowerF lowerB lowerR lowerL )
並且每個mesh的骨骼都減為80以下了

  • 修改好xml檔,注入物理SMP進遊戲測試

大成功!!

總算解決了第一樓的2大難題拉伸倒轉

4/6補充一下
忘了講分割完網格後的XML如何修改  
就把碰撞體多複製一份並改名為你切割下來的那份
並記得設置新切割碰撞體不與原碰撞體碰撞

EX:
skirt我切割為skirt 與 skirt_2
再來到xml複製一份skirt的宣告改為skirt_2(tag記得也要改),並設為不碰撞


Skir也要記得修改一下



大概似這樣

可喜可賀XDD
6
-
LV. 32
GP 5k
16 樓 帝龍‧蒼鱗の雷光 TERENCEYAO
GP5 BP-
終於有 HDT-PE 轉 HDT-SMP 這種文章了 XD
必須未看先給 GP
求版主 必須 加 精華 !!!!!! 這是很重要的知識性教學資產啊啊啊啊 =ww=
被吃掉了怎麼半 DX

不然之前看國外英文教學帖真的比較辛苦 (
5
-
LV. 38
GP 887
17 樓 myps2 myps2
GP4 BP-
非常值得推

那個拉伸的問題
以前我是直接做一件短裙來取代.......

看樣子可以解決不少服裝轉SE上的問題了


4
-
LV. 39
GP 11k
18 樓 chiousf chiousf
GP3 BP-
3
-
LV. 32
GP 805
19 樓 風音 dfppo58612
GP3 BP-
感謝Xing大指路

已成功轉換NINI大神的DawleySyande的裙子跟假髮在遊戲內顯示

目前有遇到另一問題

我照10樓的方法書寫了一份xml檔想讓裙子搖動

但進去遊戲後裙子一樣死板板的...

後面也有嘗試過Xing大提供的xml檔案,進去遊戲後仍然一樣情況

能否解惑一下是我的操作步驟哪邊出問題呢?

第一次開始用NifSkope真的很難上手,嗚嗚


3
-
LV. 15
GP 196
20 樓 Xing sdde123123
GP5 BP-
※ 引述《dfppo58612 (風音 )》之銘言
> 感謝Xing大指路
> 已成功轉換NINI大神的DawleySyande的裙子跟假髮在遊戲內顯示
> 目前有遇到另一問題
> 我照10樓的方法書寫了一份xml檔想讓裙子搖動
> 但進去遊戲後裙子一樣死板板的...
> 後面也有嘗試過Xing大提供的xml檔案,進去遊戲後仍然一樣情況
> 能否解惑一下是我的操作步驟哪邊出問題呢?
> 第一次開始用NifSkope真的很難上手,嗚嗚
> 在新視窗開啟圖片
這是你的檔案有三點錯誤

  1. NistringExtraData 的Name還沒從HDT-PE改為HDT-SMP
    把HDT Havok Path 改為HDT Skinned Mesh Physics Object


  2. 已經有一行NistringExtraData的宣告了但你的骨骼下方多一行
    需要請你刪掉它或是重新複製貼上時選錯地方貼上和複製請到6樓再詳細看一遍


  3. 沒有把原本的骨骼刪掉,既然你已經把原本骨骼拉上回NPC了,照理講skeleton.nif這節點應該是早要刪除的,所以還是麻煩再詳細看一下6樓



完成是要底下這樣

最後很高興越來越多人來嘗試了,有問題還請留言給我


5
-
未登入的勇者,要加入 26 樓的討論嗎?
板務人員:

2832 筆精華,10/15 更新
一個月內新增 5
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】