淫妹汁 发表于 2015-6-12 02:49

[HDT-SMP]终于自学,实现添加各肢体部件的物理碰撞,《纯手打字》写给新手!甚至老手

本帖最后由 淫妹汁 于 2015-6-13 06:33 编辑

也许有人写过这个教程,,也估计那些贴都沉了,我今天实现各肢体碰撞,索性写下方法,也让我以后自己轻松找到教程

正文:

其实实现物理碰撞很容易,因为插件就是 网格[至于是顶点还是边还是面的碰撞我就不晓得了],
所以只需要正确的把各部件的Shape名称,填写到对应的Xml里

以下是步骤:
首先在C:\skyrim\Data\meshes\actors\character\character assets
的目录里,找到部件,比如脚:femalefeet_0.nif
用NifSkope打开,找到NiTriShape这个项,找到它的“值"
比如
femalefeet_1
记住这个名字

然后,到以下目录:
C:\skyrim\Data\SKSE\Plugins\hdtSkinnedMeshConfigs
里面,建立一个记事本,修改其名称为:femalefeet_1.xml
打开后
写入一些参数
这些参数,手/脚/头都基本通用,属于刚体

比如手的参数:<?xml version="1.0" encoding="UTF-8"?>

<system>

        <per-vertex-shape name="HandFemale3rd">
                <margin>0</margin>
                <tag>hand</tag>
                <no-collide-with-tag>feet</no-collide-with-tag>
        </per-vertex-shape>

</system>


比如脚的参数:
<?xml version="1.0" encoding="UTF-8"?>

<system>

        <per-vertex-shape name="femalefeet_1">
                <margin>0</margin>
                <tag>feet</tag>
                <no-collide-with-tag>hand</no-collide-with-tag>
        </per-vertex-shape>

</system>



要注意的是,per-vertex-shape name=写入你模型里NiTriShape这个项的“值”或者叫模型名字


在    <tag>这里</tag>写入的是部位标签,,比如身体是body,手是hand,脚或鞋是feet


保存记事本

最后一步,让XML生效

在刚才的目录里,打开defaultBBPs.xml

在<default-bbps>项里,添加

      <map shape="xxxxxx" file="SKSE\Plugins\hdtSkinnedMeshConfigs\OOOOO"/>

这个xxxxxx就是刚才那个值,比如femalefeet_1
这个OOOOO就是刚才那个xml文件的名字,比如femalefeet_1.xml


这样,模型femalefeet_1.nif的物理碰撞信息就完成了

如果发生 最大身形的手有碰撞,可最小身型无碰撞,请检查femalefeet_1.nif和femalefeet_0.nif的模型名字是否和xml文件里一样

如果发生无效,请仔细检查参数是否写错,是否写错了地方,是否关联文件忘记写或者写错
发个代码写的示范图:





呼啦啦呢 发表于 2022-1-11 23:44

牛叉,感谢分享

tomatopie 发表于 2022-4-20 10:39

666666666666

erickxfk 发表于 2022-6-3 12:23

好东西,学习学习

xiaoyao12241 发表于 2024-3-18 20:32

淫妹汁 发表于 2015-6-12 02:56
我写的这么详细,,难道还看不懂???你就算不会手写代码,,也会复制粘贴吧??? ...

大佬这个重制版可以按这个教程吗

3dm_31502802 发表于 2024-10-16 15:21

谢谢分享!顶上
页: [1]
查看完整版本: [HDT-SMP]终于自学,实现添加各肢体部件的物理碰撞,《纯手打字》写给新手!甚至老手