Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright © 2015 Curt Hill Models and Textures Making your entity interesting.

Similar presentations


Presentation on theme: "Copyright © 2015 Curt Hill Models and Textures Making your entity interesting."— Presentation transcript:

1 Copyright © 2015 Curt Hill Models and Textures Making your entity interesting

2 Introduction Single cubes are not impressive Rather we wish to build up our entity with a series a various sized cubes to go with the cubist theme We have to be able to: –Size them –Place them –Connect them –Texture them First the coordinate system Copyright © 2015 Curt Hill

3 Coordinate System You should all be familiar with Cartesian coordinates –X is left right –Y is up down This is not enough for a 3D space We need X, Y, Z –This is the order we always specify them However, it is not the extension we would expect Copyright © 2015 Curt Hill

4 3D Coordinates In this coordinate system, the Cartesian plane is turned 90° rotating on the Y axis: X comes out of the screen toward us –Positive is moving towards the viewer Y is up-down –Positive is down Z is left-right –Positive moves towards the right Copyright © 2015 Curt Hill

5 Pixels The units of position, size and other things are always in pixels –Size must be an integer –Position may be fractional, so a float The Minecraft pixel is not the screen pixel A block is a cube 16 pixels on a side If we have a 32 by 32 texture each Minecraft pixel gets four texture pixels Copyright © 2015 Curt Hill

6 Coordinate Zero In some sense the X and Z zero points are relative –Thus we do not care The Y zero point is 23 pixels above the surface Thus the Y zero is about a block and half above the floor Copyright © 2015 Curt Hill

7 Coordinate Diagram Copyright © 2015 Curt Hill

8 Box Creation As we saw in previous presentation the box is created by the addBox method –This is a method of the ModelRenderer object Each box will have an addBox call that sizes and positions it Copyright © 2015 Curt Hill

9 Unit Cube Copyright © 2015 Curt Hill public class CurtCubeModel extends ModelBase{ public ModelRenderer body; public CurtCubeModel(){ body = new ModelRenderer(this,20,0); body.addBox(0F,0F,0F,1,1,1); body.setRotationPoint(.5F,.5F,.5F); }

10 The addBox The first three parameters are floats –These are the X, Y, Z positions respectively The second three parameters are integers in pixels –Again X, Y, Z respectively –These determine size The zero Y will make this thing float in the air –Normally it would have legs or some such support Copyright © 2015 Curt Hill

11 Produces This Copyright © 2015 Curt Hill

12 Commentary The unit cube is somewhat in front of the back wall and the camera is above it Therefore it looks like it is more like 16-18 Minecraft pixels from the floor Copyright © 2015 Curt Hill

13 One More Time What does the setRotationPoint do? Describes the center of the object When the entity turns it rotates around this location By default this becomes 0,0,0 which is a corner We will now drop the cube to the floor Copyright © 2015 Curt Hill

14 Down To Earth Copyright © 2015 Curt Hill @SideOnly(Side.CLIENT) public class CurtCubeModel extends ModelBase{ public ModelRenderer body; public CurtCubeModel(){ body = new ModelRenderer(this, 0, 0); body.addBox(0F,22.5F,0F,1,1,1); body.setRotationPoint(.5F,.5F,.5F); }

15 Floored Copyright © 2015 Curt Hill

16 Commentary Since the center is set by setRotationPoint to the cube’s midpoint we must set the Y to 22.5 rather than 23 –Otherwise half the cube is below the floor Typically the main body of an entity is the middle of a cube Appendages usually specify the joint location –That is where we want it to rotate, not the middle Copyright © 2015 Curt Hill

17 addBox Again The positional parameters define a corner The three integers do not define sizes but distances to travel from the corner –Thus they may also be negative Thus we cannot determine which corner the positions specify until we look If the Y integer is negative then the positions determine a bottom corner Copyright © 2015 Curt Hill

18 addBox Again We typically want to center the X and Z values and make the Y the height Thus if X size is 8 we often make the X position -4 –The X then varies from -4 to 4 If we do this then the item falls into the middle of its shadow Copyright © 2015 Curt Hill

19 Interlude Now we can size and place multiple pieces Now we have to connect them The Minecraft method is addChild A child maintains its spatial relationship with the parent as Minecraft moves the parent Copyright © 2015 Curt Hill

20 Modeling Two common approaches: The first is to just build the thing in Java code The second is to build it with Techne and then import the results into Minecraft –http://techne.zeux.me/http://techne.zeux.me/ I will do the first –You are free to do either –However, you still need to know the connection thing Copyright © 2015 Curt Hill

21 Example My example will to make an Emu like entity It will contain a body, two legs, head and neck When that part works we will animate the legs and head Three classes: –CurtEmu –CurtModelEmu –CurtRenderEmu Copyright © 2015 Curt Hill

22 Process It is easy to mess this up, so you should use an incremental approach Get one thing right, then add the next –Alas, 30 second compiles slow things After modeling is right, animate You may do textures before or after animation I will now abandon the CurtCube and start developing the CurtEmu Copyright © 2015 Curt Hill

23 Directionality Minecraft must guess as to which end of your entity is front The guess it makes is that it is always facing the negative Z direction Thus for a cow the Z dimension will be larger than the X dimention A crab would be the reverse Copyright © 2015 Curt Hill

24 Connection We would like several pieces that move as one This is most easily done with the addChild method Each new piece becomes a child of an existing piece Typically start at the most important or bulkiest piece and work outward For the Emu the body is the center Copyright © 2015 Curt Hill

25 Body Copyright © 2015 Curt Hill public ModelRenderer body; public ModelRenderer leg1; public ModelRenderer leg2; public ModelRenderer neck; public ModelRenderer head; … body = new ModelRenderer(this, 0, 0); body.addBox(-3F,10F,-1.5F,3,-3,6); body.setRotationPoint(0F, 8.5F, 0F);

26 Observations The body will be 3 by 3 by 6 –The Z is the longest dimension It will be positioned 10 pixels from ground Y size is negative so bottom corner is origin The Y value of 10 puts the body in the air Copyright © 2015 Curt Hill

27 One more time with addBox The coordinates for children are different than the parent The parent’s position is relative to the coordinate system The child’s position is relative to the parent Of course we cannot tell until we do the addChild Copyright © 2015 Curt Hill

28 The addChild method Takes only one parameter: parent.addChild(child); See the example in next screen and observe that the new item is relative to the old Copyright © 2015 Curt Hill

29 Apply the neck Copyright © 2015 Curt Hill body = new ModelRenderer(this, 0, 0); body.addBox(-3F, 10F, -1.5F, 3, -3, 6); body.setRotationPoint(0F, 8.5F, 0F); neck = new ModelRenderer(this, 0, 0); neck.addBox(-2F, 2F, 0F, 1, 5, 1); neck.setRotationPoint(0F, 0F, 0F); body.addChild(neck); Notice the 0F for Y position – relative to the body not the regular coordinate system

30 The Rest The legs go below and attach to the body –We will not put feet on the legs, but could The head attaches to the neck Thus a child may also have children Copyright © 2015 Curt Hill

31 Rest of Body Copyright © 2015 Curt Hill head = new ModelRenderer(this, 0, 0); head.addBox(0F, 2F, 0, -1, -1, -3); head.setRotationPoint(-1F, 0F, 1F); neck.addChild(head); leg1 = new ModelRenderer(this, 0, 0); leg1.addBox(-3F, 5F, 0F, 1, 6, 1); leg1.setRotationPoint(0F, 5F, 0F); body.addChild(leg1); leg2 = new ModelRenderer(this, 0, 0); leg2.addBox(-1.0f, 5F, 0F, 1, 6, 1); leg2.setRotationPoint(0F, 5F, 0F); body.addChild(leg2);

32 Doofuss Bird Copyright © 2015 Curt Hill

33 Modeling Summary Not an awful lot of science Create your boxes and attach them The addBox, setRotationPoint and addChild are the most important now The rotation point becomes more important as we animate Copyright © 2015 Curt Hill

34 Rotation Point The animation process works better if the rotation point is properly set relative to the addBox positions I found at least three combinations of addBox, setRotationPoint settings that made the head sit properly on the neck Only one of them allowed proper turning of the head on the neck Copyright © 2015 Curt Hill

35 Textures Again The textures are not applied in the modeler, but the renderer –CurtModelEmu and CurtRenderEmu respectively Rather there is just one texture and it must be used by all parts –This may have changed before or after 1.7 for I have seen other ways The trick then is to use offsets in a single png file Copyright © 2015 Curt Hill

36 ModelRenderer The constructor comes in several forms First parameter is always the parent ModelBase –In most of our code that will be this –A self reference One –Second parameter is a string name Other –Second and third are offsets Copyright © 2015 Curt Hill

37 Three Parameter Signature ModelRenderer( ModelBase m, int xoffset, int yoffset); Example: body = new ModelRenderer( this,300,300); We will see this in the next screens Copyright © 2015 Curt Hill

38 The Graphic Copyright © 2015 Curt Hill This is a 512 by 512 png file

39 Textured Copyright © 2015 Curt Hill

40 Interlude Minecraft only moves the main object It does this based on what it thinks is front It moves in a semi-random motion Now we want to move the legs, when Minecraft moves the whole item We will see this in an animation presentation Copyright © 2015 Curt Hill

41 Conclusion We construct the structure from rectanguloid boxes –addBox determines size and position –The setRotationPoint determines “center” We connect them with addChild Textures are applied in the renderer Next: On to animation Copyright © 2015 Curt Hill


Download ppt "Copyright © 2015 Curt Hill Models and Textures Making your entity interesting."

Similar presentations


Ads by Google