有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 2370|回复: 2
收起左侧

[技巧分享] 【Techne 基础教程】Part 1

[复制链接]

签到天数: 25 天

连续签到: 1 天

[LV.4]偶尔看看III

481

主题

519

好友

15万

积分

最终章

☆非拔作不Ctrl★

积分
159739
发表于 2012-7-30 14:19:03 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
本帖最后由 hupanxx 于 2012-7-30 14:21 编辑

我觉得是时候写一写Techne的教程了,当我开始制作Techne的时候我不知道做建模最重要的事情,所以在测试中遇到了很多错误。
我甚至没有想过写出Techne后公开,
只是想给朋友们用——不过他们从来没有用过它……
Part 1, 基本的代码建模
Part 2, 动画
Part 3, 块和子部件(啥……)
好吧……教程。

在Minecraft中做建模,在没有Techne的情况下
这个教程先不用Techne,因为我想让你知道到底是怎么在Minecraft里做建模的。这是为了为以后的教程打好基础,也为了你能做出更多更好玩的模型着想。
无论如何,我会在Techne上截一些图给你们看。
这里是一个Minecraft的坐标系(和Techne的)的简要概述。上面的那个盒子在原点(0,0,0),那个下面的盒子正好在地面上(0,23,0)。
盒子们都是1x1x1像素的,这里所有的单位都是像素,但是那是材质的像素点。这个的意思是一个1x1x1的盒子会给我们展示每个面一个像素点。一个16x16x16像素相当于现实中的1米x1米x1米(yay,这是啥……不会翻……感叹词而已吧……)一只苦力怕有26像素高,相当于他有1.625米那么高。


                               
登录/注册后可看大图


一个模型文件必须继承ModelBase类和应该重载渲染方法。这个方法将被调用到每一帧,在那里你要调用每次里渲染所有模型渲染器中你有的方法。(这句不太会翻……)
[mw_shl_code=java,true]package net.minecraft.src;
public class ModelTutorial extends ModelBase{    ModelRenderer body;
    public ModelTutorial()    {        body = new ModelRenderer(this, 18, 4);        body.addBox(-6F, -10F, -7F, 12, 18, 10, 0.0F);        body.setRotationPoint(0.0F, 5F, 2.0F);        body.rotateAngleX = -0.7854F;    }
    @Override    public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)    {        setRotationAngles(f, f1, f2, f3, f4, f5);        body.render(f5);    }
    @Override    public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)    {
    }}[/mw_shl_code]

这是一个非常简单的模型类,它定义了一个盒子并渲染到每一帧。来看一看一些代码里的小片段吧
[mw_shl_code=java,true]body = new ModelRenderer(this, 18, 4);
body.addBox(-6F, -10F, -7F, 12, 18, 10, 0.0F);
body.setRotationPoint(0.0F, 5F, 2.0F);
new ModelRenderer(this, 18, 4);[/mw_shl_code]

new ModelRenderer(this, 18, 4); 这个会创建一个模型渲染器的新实例,你传递了你的模型类的实例,作为第一个参数,第二 是材质偏移X轴,第三是材质偏移Y轴。


                               
登录/注册后可看大图

addBox需要7个参数:offsetX, offsetY, offsetZ, sizeX, sizeY, sizeZ 和 extension。我以后会解释一下"offset"做了些啥(和“position”和设置“setRotationPoint”)还有现在我们可以无视掉“extension”。
setRotationPoint会设置这个盒子的位置,那个rotation-point (或者 anchor-point) 是在周围
的点,该模型将围绕它旋转


                               
登录/注册后可看大图


旋转一个盒子,你要使用rotateAngleX-Z的公共领域。比方说,我们希望那条尾巴旋转-45°,如上面的图片所示。注意rotateAngleX-Z的弧度是很重要的。有一个快捷的计算方法  360°==2pi   n/180*(-45)=-0.7854。
body.rotateAngleX = -0.7854F;
你做的每一个模型都将包含这些盒子。
现在让我们看看渲染方法,它有7个参数。第一个是你渲染的那个实体(entity),你用它来确定(实体的)状态。ModelWolf(狼模型)会检查它是在坐着还是在甩身体接着依照着它改变模型。

接下来的5个参数定义各种动画的幅度,首先是活动的模型在走动的时候,第二个飞行时(如鸡扇动自己的翅膀)等。最后一个参数是时间。
更新:好吧,我道歉,这是不完全正确,我会在接下来的文章中解释
更新2:你可以在这里找到这篇文章

在这个方法你呼叫了你的模型渲染器里的渲染方法,那样它们就显示在你的屏幕上。我会在以后的教程里慢慢解释这些细节,我以后也会解释动画是怎么工作的还有那些参数是什么意思。


原帖地址:http://www.mcbbs.net/thread-37384-1-1.html

Techne教程总汇帖:https://www.gn00.com/t-88994-1-1.html
补档?不存在的
回复

使用道具 举报

该用户从未签到

388

主题

2042

好友

10万

积分

懒人

积分
104579
发表于 2012-7-31 09:16:28 | 显示全部楼层
@3*虽不明,但觉厉
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

65

主题

118

好友

4万

积分

第二章

积分
43502
发表于 2012-8-4 23:15:13 | 显示全部楼层
ぃ野花のAriosモ 发表于 2012-7-31 09:16
虽不明,但觉厉

语死早,直中箭···

(话说真的不懂···)

点评

← ←  发表于 2012-8-4 23:15
横跨爱智哲学与理论数理连接传统文学与现代动漫融合平和保守与激进热烈拥有巨人肉体与精灵魂魄妄图在精神与物质上建造新世界的伪宅一只助
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(基宅) ( 粤ICP备18082987号-1 | 浙公网安备 33010902001746号 )

GMT+8, 2024-4-27 17:45 , Processed in 0.161042 second(s), 19 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表