Max_X
有没有1.7.10给  工具添加obj模型的教程?  我找了好久只找到了给方块添加的。。。 而且貌似他们的添加方式不一样。。。



LCwwww
我可以帮助你

LCwwww
首先,建一个物品模型

LCwwww
然后写Render

LCwwww
别忘了还要写一个基本的物品

LCwwww
  1. MinecraftForgeClient.registerItemRenderer(物品包.物品名, new RenderItem物品());
复制代码
最后,在代理中写代码

LCwwww
  1. public class ClientProxy extends CommonProxy
  2. {
  3.         public void preInit(FMLPreInitializationEvent event)
  4.           {
  5.             super.preInit(event);
  6.           }
  7.           
  8.           public void init(FMLInitializationEvent event)
  9.           {
  10.             super.init(event);
  11.    
  12.             MinecraftForgeClient.registerItemRenderer(ModWeapon.blade1, new RenderItemBlade());
  13.           }
  14.           
  15.           public void postInit(FMLPostInitializationEvent event)
  16.           {
  17.             super.postInit(event);
  18.           }
  19. }
复制代码
ClientProxy的代码

LCwwww
  1. public class RenderItemBlade implements IItemRenderer
  2. {
  3.         private IModelCustom model;
  4.         private ResourceLocation texture;
  5.         private static final ResourceLocation M = new ResourceLocation("rotate:textures/model/item/weapon/bladeX.obj");
  6.        
  7.         public RenderItemBlade()
  8.           {
  9.             model = AdvancedModelLoader.loadModel(M);
  10.             texture = new ResourceLocation("rotate:textures/model/item/weapon/bladeX.png");
  11.           }

  12.         public boolean handleRenderType(ItemStack item, ItemRenderType type) {
  13.                
  14.                 return true;
  15.         }

  16.         public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
  17.                
  18.                 return true;
  19.         }

  20.         public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
  21.                 Minecraft.getMinecraft().renderEngine.bindTexture(this.texture);
  22.             GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F);
  23.             if (type == IItemRenderer.ItemRenderType.INVENTORY)
  24.             {
  25.               GL11.glTranslatef(0.5F, 0.37F, 0.0F);
  26.               GL11.glRotatef(225.0F, 0.0F, 0.0F, 1.0F);
  27.               GL11.glScaled(0.006, 0.025, 0.025);
  28.               model.renderPart("bladeX");
  29.             }
  30.             if (type == IItemRenderer.ItemRenderType.EQUIPPED)
  31.             {
  32.               GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
  33.               GL11.glRotatef(-12.0F, 0.0F, 0.0F, 1.0F);
  34.               GL11.glTranslatef(-1.85F, -1.3F, 0.0F);
  35.               GL11.glScaled(0.025, 0.025, 0.025);
  36.             }
  37.             if (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)
  38.             {
  39.               GL11.glTranslatef(0.5F, -1.3F, -1.0F);
  40.               GL11.glRotatef(-45.0F, 0.0F, 1.0F, 0.0F);
  41.               GL11.glTranslatef(0.5F, 1.0F, -0.9F);
  42.               GL11.glRotatef(-47.0F, 0.0F, 0.0F, 1.0F);
  43.               GL11.glScaled(0.025, 0.025, 0.025);
  44.             }
  45.             if (type == IItemRenderer.ItemRenderType.ENTITY)
  46.             {
  47.               GL11.glTranslatef(-3.0F, -0.5F, 0.0F);
  48.               GL11.glScaled(0.025, 0.025, 0.025);
  49.             }
  50.             if (type != IItemRenderer.ItemRenderType.INVENTORY) {
  51.               this.model.renderPart("这个是OBJ模型中的元件名");
  52.             }
  53.           }
  54.         }
复制代码
RenderItem的代码

LCwwww
这样就可以了,记得要有OBJ模型,还要记得这个要写
  1. this.model.renderPart("这个是OBJ模型中的元件名");
复制代码

Max_X
LINYIPI 发表于 2018-2-2 12:08
这样就可以了,记得要有OBJ模型,还要记得这个要写

我试试去 谢谢了

565352671
看样子很像C#

Max_X
Max_X 发表于 2018-2-2 15:32
我试试去 谢谢了

元件是什么??  不太懂

Max_X
  1. public class RenderItemBlade implements IItemRenderer
  2. {
  3.         private IModelCustom model;
  4.         private ResourceLocation texture;
  5.         private static final ResourceLocation M = new ResourceLocation("collapseworld:textures/model/bladeX.obj");
  6.         
  7.         public RenderItemBlade()
  8.           {
  9.             model = AdvancedModelLoader.loadModel(M);
  10.             texture = new ResourceLocation("collapseworld:textures/items/bladeX.png");
  11.           }

  12.         public boolean handleRenderType(ItemStack item, ItemRenderType type) {
  13.                
  14.                 return true;
  15.         }

  16.         public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
  17.                
  18.                 return true;
  19.         }

  20.         public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
  21.                 Minecraft.getMinecraft().renderEngine.bindTexture(this.texture);
  22.             GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F);
  23.             if (type == IItemRenderer.ItemRenderType.INVENTORY)
  24.             {
  25.               GL11.glTranslatef(0.5F, 0.37F, 0.0F);
  26.               GL11.glRotatef(225.0F, 0.0F, 0.0F, 1.0F);
  27.               GL11.glScaled(0.006, 0.025, 0.025);
  28.               model.renderPart("bladeX");
  29.             }
  30.             if (type == IItemRenderer.ItemRenderType.EQUIPPED)
  31.             {
  32.               GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
  33.               GL11.glRotatef(-12.0F, 0.0F, 0.0F, 1.0F);
  34.               GL11.glTranslatef(-1.85F, -1.3F, 0.0F);
  35.               GL11.glScaled(0.025, 0.025, 0.025);
  36.             }
  37.             if (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)
  38.             {
  39.               GL11.glTranslatef(0.5F, -1.3F, -1.0F);
  40.               GL11.glRotatef(-45.0F, 0.0F, 1.0F, 0.0F);
  41.               GL11.glTranslatef(0.5F, 1.0F, -0.9F);
  42.               GL11.glRotatef(-47.0F, 0.0F, 0.0F, 1.0F);
  43.               GL11.glScaled(0.025, 0.025, 0.025);
  44.             }
  45.             if (type == IItemRenderer.ItemRenderType.ENTITY)
  46.             {
  47.               GL11.glTranslatef(-3.0F, -0.5F, 0.0F);
  48.               GL11.glScaled(0.025, 0.025, 0.025);
  49.             }
  50.             if (type != IItemRenderer.ItemRenderType.INVENTORY) {
  51.               this.model.renderPart("bladeX.obj");
  52.             }
  53.           }
  54.         }
复制代码

我弄的是这样的  没报错 但是 进游戏手上是空的  什么也没有
我拿了东西,别说我没拿。。

LCwwww
this.model.renderPart("obj中对象的名称");

LCwwww
比如你在建模软件中建了个方块模型那么原件就是

Max_X
LINYIPI 发表于 2018-2-3 08:42
this.model.renderPart("obj中对象的名称");
  1. # Blender v2.79 (sub 0) OBJ File: 'untitled.blend'
  2. # www.blender.org
  3. mtllib untitled.mtl
  4. o Cube
  5. v 1.000000 0.000000 -1.000000
  6. v 1.000000 0.000000 1.000000
  7. v -1.000000 0.000000 1.000000
  8. v -1.000000 0.000000 -1.000000
  9. v 1.000000 10.000000 -0.999999
  10. v 0.999999 10.000000 1.000001
  11. v -1.000000 10.000000 1.000000
  12. v -1.000000 10.000000 -1.000000
  13. vn 0.0000 -1.0000 0.0000
  14. vn 0.0000 1.0000 -0.0000
  15. vn 1.0000 0.0000 0.0000
  16. vn -0.0000 -0.0000 1.0000
  17. vn -1.0000 -0.0000 -0.0000
  18. vn 0.0000 0.0000 -1.0000
  19. usemtl Material
  20. s off
  21. f 1//1 2//1 3//1 4//1
  22. f 5//2 8//2 7//2 6//2
  23. f 1//3 5//3 6//3 2//3
  24. f 2//4 6//4 7//4 3//4
  25. f 3//5 7//5 8//5 4//5
  26. f 5//6 1//6 4//6 8//6
复制代码

这个是我OJB的文件 哪个是名称。。。

Max_X
Max_X 发表于 2018-2-3 11:34
这个是我OJB的文件 哪个是名称。。。

弄出来了  话说             if (type == IItemRenderer.ItemRenderType.INVENTORY) 代表的是在不同地方的渲染的大小方向吗?、      

Max_X
Max_X 发表于 2018-2-3 11:34
这个是我OJB的文件 哪个是名称。。。

不对啊  我假设一个模型是两个方块构成的   怎么同时渲染两个方块出来 填原件的话 只能渲染出一个

Max_X
LINYIPI 发表于 2018-2-3 08:42
this.model.renderPart("obj中对象的名称");

谢谢了  我瞎弄 已经弄明白了



果然不能当伸手党