本帖最后由 kirbykirby 于 2012-7-29 15:53 编辑

教程源地址: http://schwarzeszeux.tumblr.com/post/15772700951/minecraft-modeling-pieces-and-subparts-part-3-of-x首先对Techne的作者表示崇高敬意!
以下为译文


Wait.What?


Part 1, 基本的代码建模
Part 2, 动画
Part 3, 块和子部件
Childparts分支下的东西我在Techne里把它叫做“piece”。
你要记住的最重要的东西是你创建了一个不同的ModelRenderer(模型渲染器)

让我们来看看龙的构造函数吧:
  1. public ModelDragon(float var1){      this.texWidth = 256;      this.texHeight = 256;
  2.       this.setTextureOffset("rearleg.main", 0, 0);      this.setTextureOffset("rearfoot.main", 112, 0);      this.setTextureOffset("rearlegtip.main", 196, 0);
  3.       this.rearLeg = new ModelPart(this, "rearleg");      this.rearLeg.setPos(-16.0F, 16.0F, 42.0F);      this.rearLeg.addBox("main", -8.0F, -4.0F, -8.0F, 16, 32, 16);
  4.       this.rearLegTip = new ModelPart(this, "rearlegtip");      this.rearLegTip.setPos(0.0F, 32.0F, -4.0F);      this.rearLegTip.addBox("main", -6.0F, -2.0F, 0.0F, 12, 32, 12);
  5.       this.rearFoot = new ModelPart(this, "rearfoot");      this.rearFoot.setPos(0.0F, 31.0F, 4.0F);      this.rearFoot.addBox("main", -9.0F, 0.0F, -20.0F, 18, 6, 24);
  6.       this.rearLeg.addChild(this.rearLegTip);      this.rearLegTip.addChild(this.rearFoot);}
复制代码
TextureWidth 和 TextureHeight的意思是相当明显的。
setMapTex是不同的一个——他的参数明显由一个string(字符串)和两个int(整型)组成。这个字符串指盒子的路径。他不是完全路径,是“PieceName.BoxName”(块的名字.盒子的名字)。
整数与textureOffset无关,它该ModelRender的构造函数。
  1. public ModelRenderer(ModelBase var1, String var2)
复制代码
我们需要通过对模型本身的实例得到textureoffset(材质偏移?) ,字符串是块的名称。

放置盒子,你需要调用addBox,像你以前做的那样。
参数没有改变过,所以这里不用再解释一次。
无论如何,你要做的就是在一个piece里放置多重的盒子。所有属于一个piece(块)的盒子共享相同的材质偏移,位置和角度(锚点- -?)。
所有你需要做的就是创建一个块的层级去调用addChild与你想放置的那个子部件。

这里是一个腿的层次概览。


我也想写一写关于渲染块的东西,不过我想把它单独成篇。
完成了的龙:






=======================以下为小广告=====================
    可能没有人知道我开过一个叫Dreamland服务器,恩……已经倒闭了……不过这不要紧,我会用做mod的形式来Return to Dreamland!我需要大家的力量!有意者加我企鹅号986869429吧!急需美工和程序员!如果你有关于mod的创意(前沿科技mod)也可以加我。