最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

T0R0ブロマガ相關(guān)翻譯計劃(0.3)_PMDE插件的制作方法 骨骼操作篇2

2021-11-07 21:32 作者:文音_  | 我要投稿

※本文不保證百分之百的翻譯準確,僅供參考,具體內(nèi)容依然以日文原版為準。

原作者T0R0的博客原地址:https://sp.ch.nicovideo.jp/t0r0/blomaga/ar152399

 本文內(nèi)容與暗鍋插件并無關(guān)系,但也可能能對他人有所幫助,所以也進行翻譯。關(guān)于對本文翻譯內(nèi)容玩文字游戲、鉆空子,從而違反原文使用規(guī)約的行為,本人概不負責

※非原文部分會使用灰色字色。對一些個人認為重要的部分會進行加粗/變色強調(diào)。

 PMXe相關(guān)名詞以Emil制作的“多功能信息處理與漢化插件”中的文本為準。

 文中圖片均為本人依照原博客自作而非搬運,請注意。

 對個別詞的理解有一定的主觀成分,且本文有編程相關(guān)專業(yè)名詞可能會有誤譯,歡迎評論區(qū)理性討論。

※本篇翻譯文章并未獲得原作者授權(quán)/知悉,僅做交流用途。如有不妥,請評論區(qū)留言告知,我會立刻進行刪除。

請勿使用本文章內(nèi)任何文本/圖片個人參考以外的其他用途,包括但不限于用于漢化文本,二次上傳至公共網(wǎng)絡等。
○僅限于「PMDE插件的制作方法」系列文章,請自由地取用文章中的代碼部分文本(藍色文本)。對代碼中的注釋都進行了翻譯,雖然并不專業(yè),但希望能為中文使用者提供些許的便利。

原文投稿日期為2013/03/10?12:06

PMDE插件的制作方法 骨骼操作篇2

雖說是插件但也只是普通的C#所以有很多種記載方法,但為了讓文章更加易懂,在此為記載方法添加限制。并不是只有這一種寫法,請注意。

在前文中進行了簡單操作的說明,不過在實際編寫時「想要進行的操作」與「要運行的內(nèi)容」感覺上會有很大程度的差異。而要解說這種差異是非常麻煩的,所以我事先制作了項目示例文件,總結(jié)了骨骼操作所必需的功能。
首先,請下載項目示例文件(http://bowlroll.net/up/dl15339)(和上一期不一樣記得下載)。
在此文件中事先記載了骨骼操作所必需的功能。說明也會按照文件內(nèi)容的順序進行。以及,可以使用此項目文件中的內(nèi)容制作插件。


1.打開項目文件
(以下將均以目前最新版本的Visual Studio Community 2019進行畫面示范,文章中所有操作也會根據(jù)新版本實際情況進行調(diào)整。)
請將下載后的文件解壓至
「Users」→「(用戶名)」→「source」
文件夾。(在此不說明解壓等操作的方法。)

點擊畫面左上角的「文件」→「打開」→「項目/解決方案」

主題顏色可能會根據(jù)安裝時初次選擇的主題而有所不同,但內(nèi)容與功能實質(zhì)相同。


如果解壓地址正確,應該能看到名為BoneSample的文件夾,點擊打開


能夠看到名為「BoneSample.sln」的文件,請打開此文件。



項目將會打開。


2.能從骨骼中獲取的信息
前文只使用了文字來做解說,所以這次試著將PMDE的畫面與骨骼對象中能獲取的信息一一對應并做成了圖片。


以上的值可以從骨骼對象(記載為this.PMX.Bone[i])中獲取。
這其中Local軸相關(guān)的操作比較特殊,這方面會之后單獨說明。

3.關(guān)于3維表示
因為MMD是3D軟件所以要和3維空間表示打好關(guān)系才行。(雖然我還沒打好關(guān)系?。。。。鳎?br>首先,在骨骼信息中Position/ToOffset/FixAxis需要3維表示。

3維表示是這樣
V3 Position = new V3(0.0f,0.0f,0.0f);
定義的。
從中分別獲取值時可以像這樣
Position.X
Position.Y
Position.Z

獲得。

使用方法如下。
例)改變骨骼的位置。
IPXBone Bone =(IPXBone)this.PMX.Bone[0];
Bone.Position = new V3(0.0f,0.0f,0.0f);


IPXBone Bone =(IPXBone)this.PMX.Bone[0];
V3 NewPosition = new V3(0.0f,0.0f,0.0f);
Bone.Position = NewPosition;

這個操作可以使BoneIndex0的骨骼坐標移至原點。

4.實際操作一下骨骼吧
接下來開始實際操作。
將打開的項目文件中
//-------------------------
//處理由此開始
//-------------------------
(在此處粘貼示例)
//-------------------------
//處理到此結(jié)束
//-------------------------

像這樣,為了能讓已經(jīng)寫入的部分之間能夠粘貼所需的處理,示例中記載著上述說明。

由于從項目制作插件的方法在上上回已經(jīng)進行了說明,所以此處不再贅述。(http://ch.nicovideo.jp/t0r0/blomaga/ar151387)
https://www.bilibili.com/read/cv13892060

?獲取骨骼Index吧
接下來獲取「頭」骨的骨骼Index。(將使用名為GetBoneIndex的功能來獲取BoneIndex。)
MessageBox.Show(this.GetBoneIndex("頭").ToString());

?改變骨骼名稱吧
試著將「頭」骨的名稱改變?yōu)椤割^頭」。(將使用名為RenameBone的功能來改變骨骼名。)
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
HeadBone.Name="頭頭";




this.RenameBone("頭","頭頭");

?改變骨骼的位置吧
試著將「頭」骨的位置改為原點。
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
HeadBone.Position=new V3(0.0f,0.0f,0.0f);


?將骨骼設置為旋轉(zhuǎn)付予吧
讓「頭」骨的動作與首骨連動吧(名為SetAppendRotation的部分將一口氣進行旋轉(zhuǎn)付予所需的設置。)

IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];
NeckBone.AppendParent = HeadBone;
NeckBone.AppendRatio = 0.3f;
NeckBone.IsAppendRotation = true;
NeckBone.IsAppendTranslation = false;



IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];
this.SetAppendRotation(NeckBone, HeadBone, 0.3f);


?復制骨骼吧(因為沒有調(diào)整骨骼的親子關(guān)系,所以不會成為多段骨。)
將復制頭骨為新骨骼。(名為this.CloneBone的功能將會進行復制骨骼時所必需的操作。)
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone CloneHeadBone = (IPXBone)HeadBone.Clone();
this.PMX.Bone.Add(CloneHeadBone);



IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone CloneHeadBone = (IPXBone)this.CloneBone(HeadBone);
this.PMX.Bone.Add(CloneHeadBone);


?設置骨骼為非顯示吧
將頭骨設置為非顯示骨骼
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
HeadBone.Visible= false;
HeadBone.Controllable=false;


?為骨骼設置軸限制吧
使頭骨只能沿X軸方向旋轉(zhuǎn)。(SetFixAxis的部分將會進行軸限制所必需的操作。)
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
HeadBone.IsFixAxis = true;
HeadBone.FixAxis = new V3(1.0f, 0.0f, 0.0f);



IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
this.SetFixAxis(HeadBone, "GX");


還會有很多內(nèi)容所以下次繼續(xù)。

T0R0ブロマガ相關(guān)翻譯計劃(0.3)_PMDE插件的制作方法 骨骼操作篇2的評論 (共 條)

分享到微博請遵守國家法律
织金县| 彭山县| 酒泉市| 彭阳县| 德保县| 襄城县| 库伦旗| 宜春市| 泸水县| 永寿县| 樟树市| 永善县| 金塔县| 自贡市| 新野县| 长宁县| 巧家县| 元谋县| 宜君县| 绿春县| 习水县| 洛扎县| 丰顺县| 祁东县| 嵊州市| 保山市| 渝北区| 南木林县| 兴义市| 康乐县| 钟祥市| 威海市| 石狮市| 江山市| 措美县| 达尔| 调兵山市| 林芝县| 克拉玛依市| 山阴县| 乳山市|