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

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

T0R0ブロマガ相關翻譯計劃(0.4)_PMDE插件的制作方法 骨骼操作篇3

2021-11-08 13:16 作者:文音_  | 我要投稿

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

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

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

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

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

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

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

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

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

原文投稿日期為2013/03/12?16:32

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

雖說是插件但也只是普通的C#所以有很多種記載方法,但為了讓文章更加易懂,在此為記載方法添加限制。并不是只有這一種寫法,請注意。
與上次相同,本文會以此項目示例文件(http://bowlroll.net/up/dl15339)為基礎進行說明,所以請務必下載。
在此文件中事先記載了骨骼操作所必需的功能。說明也會按照文件內(nèi)容的順序進行。以及,可以使用此項目文件中的內(nèi)容制作插件。接下來將會記載骨骼操作與對應的代碼。與上次相同,應該直接復制粘貼到項目示例文件中就可以使用。

1.來實際操作骨骼試試看吧
?使其成為旋轉骨
使頭骨成為旋轉骨
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
HeadBone.IsRotation = true;
HeadBone.IsTranslation = false;

?使其成為移動骨
使頭骨成為移動骨
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
HeadBone.IsRotation = false;
HeadBone.IsTranslation = true;


?使其成為旋轉移動骨
使頭骨成為旋轉移動骨
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
HeadBone.IsRotation = true;
HeadBone.IsTranslation = true;

?使骨骼末端指向設為骨骼。
使頭骨的末端指向設置為首骨(必須將ToOffSet初始化。)
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];
HeadBone.ToBone = NeckBone;
HeadBone.ToOffset = new V3(0.0f, 0.0f, 0.0f);


使用項目示例中的功能時則為
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];
this.SetToBone(HeadBone, NeckBone);

?使骨骼末端指向設為相對位置。
使頭骨的末端指向設置為相対位置(必須將ToBoneを用null設置為初始化。)
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];
HeadBone.ToBone = null;
HeadBone.ToOffset = new V3(1.0f, 0.0f, 0.0f);

使用項目示例中的功能時則為
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];
this.SetToOffset(HeadBone,new V3(1.0f,0.0f,0.0f));

?設置Local軸
獲取Local軸需要一些比較復雜的計算,所以使用已有功能會比較好。
(SetLocalAxis的部分代碼來自うに桑(http://www.nicovideo.jp/user/7939259)。)
一般是這樣。
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")]; this.SetLocalAxis(HeadBone);

在MMD中,為了操作的便利性,左肩/左腕/左ひじ/左手首/左手手指的Local軸并非標準方向。為了調整這些Local軸所以需要這個功能。
IPXBone LeftArmBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("左腕")];
this.SetLocalAxis4MMDEx(LeftArmBone);

?生成IK
將頭先設置為IK Target并讓頭與首以IK方式運動。
生成IK時IKLink的骨骼添加順序是有意義的,請注意添加順序。

//獲取作為IK Target的頭先骨
IPXBone HeadPointBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭先")];
//獲取頭/首骨
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];

//使用頭先的骨骼信息制作IK骨
IPXBone HeadIKBone = (IPXBone)HeadPointBone.Clone();

//IK Target的設置
//代碼內(nèi)的角度是弧度制而PMDE中表示的則是角度制,請注意。
HeadIKBone.IsIK = true;
HeadIKBone.IK.Angle = 1.0f;
HeadIKBone.IK.LoopCount = 20;
HeadIKBone.IK.Target = HeadPointBone;

//IK-Link骨的設置
IPXIKLink HeadIKLink = (IPXIKLink)PEStaticBuilder.Pmx.IKLink();
IPXIKLink NeckIKLink = (IPXIKLink)PEStaticBuilder.Pmx.IKLink();
HeadIKLink.Bone = HeadBone;
NeckIKLink.Bone = NeckBone;
HeadIKBone.IK.Links.Add(NeckIKLink);
HeadIKBone.IK.Links.Add(HeadIKLink);

//添加IK骨?在頭先之前(骨骼順序)制作IK骨。
this.UpperInsertBone(HeadIKBone, HeadPointBone);

使用項目示例中的功能時則為
//獲取作為IK Target的頭先骨
IPXBone HeadPointBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭先")];
//獲取頭/首骨
IPXBone HeadBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("頭")];
IPXBone NeckBone = (IPXBone)this.PMX.Bone[this.GetBoneIndex("首")];

//使用頭先的骨骼信息制作IK骨
IPXBone HeadIKBone = (IPXBone)HeadPointBone.Clone();

//IK Target的設置
this.AddIK(HeadIKBone, HeadPointBone);
//IK-Link骨的設置(設置角度限制時則需使用はAddIKLinkLimit。)
this.AddIKLink(HeadIKBone, NeckBone);
this.AddIKLink(HeadIKBone, HeadBone);

//添加IK骨?在頭先之前(骨骼順序)制作IK骨。
this.UpperInsertBone(HeadIKBone, HeadPointBone);


下次將會記載腕IK/足IK的代碼示例。

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

分享到微博請遵守國家法律
德化县| 探索| 绵竹市| 宾阳县| 房产| 古田县| 石首市| 灵台县| 牡丹江市| 武冈市| 隆德县| 开原市| 来安县| 云龙县| 顺平县| 泰宁县| 行唐县| 高邮市| 宿松县| 淄博市| 宁河县| 兴仁县| 望谟县| 云梦县| 定结县| 得荣县| 巴塘县| 元阳县| 云霄县| 龙岩市| 桂东县| 抚顺市| 鸡泽县| 新田县| 五华县| 东乡县| 东乡| 原阳县| 绥阳县| 安国市| 儋州市|