MCSkin3D 自定义模型教程
目前很多人都是在使用MCSkin3D绘制皮肤(包括玩家皮肤和生物/怪物皮肤),
但好像没有人研究过MCSkin3D的自定义模型,所以我在这发个帖简单地说明一下。
话说我研究这个最初的目的是为了做出女仆Mod女仆皮肤的模版。
那么为了引起兴趣,在这里把我的成品们放上:
那么下面开始正式教程:
一、基础知识
首先说明一下【自定义模型】里的【模型】究竟是个什么东西。 打开MCSkin3D,我们可以看见右上角有一个你当前所选择模型。 图中就是【Alex Human(1.8)】指的就是1.8的Alex版玩家皮肤。 皮肤制作者们应该都知道这是可以更改的,1.4.2.256里也是内置了很多模型,包括了常用的生物、怪物、以及箱子、船、矿车、甚至末影水晶。 (但是不知道为何作者在1.5.0.301里把它们全部去掉了)(然而1.6.0又回来了) (不要在意我的主题) 而在MCSkin3D里,这些模型都是由一个个的长方体(部件)组合而成的,而2D的材质图则是通过将这些长方体展开,然后再排列得到的,所以自定义模型就是自己制作这么一些长方体,然后再将他们组装起来。同时,也要将材质的展开图和模组作者所定义的材质相符合。 那么现在我要开始说如何自定义这些模型。 |
二、准备工作
以上的这些模型文件都是保存在mcskin3d X_X_X_xxx\Models\之中的,打开就可以看见他们。 模型文件都是以*.xml格式保存的,使用记事本就可以打开。 顺便说一下这个文件夹之内是可以新建文件夹的,但是文件夹内必须要有正确的模型文件才能被读取。 比如下图就是我在Models\下新建了一个叫【222】的文件夹,里面放了两个女仆皮肤模版。 至此,我们新建好了文件夹,接下来就是建立模型文件了,这里我推荐直接复制现有的模版,再在原模板的基础上修改,这样可以防止出错导致软件无法读取。 然后就是如何来读懂/修改/创作自己的模型了。 |
三、内部坐标系
在讲模型自定义之前我先讲一下MCSkin3D内部的坐标系,这在敲代码的时候是非常重要的。 在这里说一下,这个坐标系是MCSkin3D作者设定的坐标系,不是我个人定义的坐标系。 首先是平面图的坐标系,以左上顶点为原点,向右为+X,向下为+Y,如图所示: 然后是三维预览的坐标系,原点自定,坐标轴如图所示: (为什么我说原点自定呢,因为软件会把所有模型自动落到地上,所以原点的位置其实无所谓,选择方便自己计算的原点就行了) 而三个方向的旋转是通过右手螺旋法则判定的,即大拇指指向坐标轴正向,四指轻握,此时四指所指的方向就是部件绕着当前轴旋转的正方向。 这样整个皮肤的坐标系就定义完成了。 |
四、代码解读
说了那么多,现在我们终于可以来看模型的代码了。 打开xml文件,我们可以看见如下的一段代码: <Techne Version="2.2"> <Author /> <DateCreated /> <Description /> <Models> <Model texture="none.png"> <BaseClass>ModelBase</BaseClass> <Geometry> <Folder type="f8bf7d5b-37bf-455b-93f9-b6f9e81620e1" Name="Model"> <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Head"> <Animation> <AnimationAngles>0,0,0</AnimationAngles> <AnimationDuration>0,0,0</AnimationDuration> <AnimationType>0,0,0</AnimationType> </Animation> <IsDecorative>False</IsDecorative> <IsFixed>False</IsFixed> <IsMirrored>False</IsMirrored> <IsSolid>True</IsSolid> <Offset>-4,-8,-4</Offset> <Position>0,0,0</Position> <Rotation>0,0,0</Rotation> <Size>8,8,8</Size> <TextureOffset>0,0</TextureOffset> <Scale>0</Scale> <Part>Head</Part> </Shape> <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Headwear"> <Animation> <AnimationAngles>0,0,0</AnimationAngles> <AnimationDuration>0,0,0</AnimationDuration> <AnimationType>0,0,0</AnimationType> </Animation> <IsDecorative>False</IsDecorative> <IsFixed>False</IsFixed> <IsMirrored>False</IsMirrored> <IsSolid>False</IsSolid> <Offset>-4,-8,-4</Offset> <Position>0,0,0</Position> <Rotation>0,0,0</Rotation> <Size>8,8,8</Size> <TextureOffset>32,0</TextureOffset> <Scale>0.5</Scale> <Part>Helmet</Part> </Shape> 。 。(此处省略N行) 。 </Folder> </Geometry> <GlScale>1,1,1</GlScale> <Name>Human</Name> <TextureSize>64,32</TextureSize> </Model> </Models> <Name>Human</Name> </Techne> 打开文件,看见那么一长串代码是不是完全摸不着头脑? 下面我就来逐行解释一下其用处。 |