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

我可以帮助你
首先,建一个物品模型
然后写Render
别忘了还要写一个基本的物品
- MinecraftForgeClient.registerItemRenderer(物品包.物品名, new RenderItem物品());
- public class ClientProxy extends CommonProxy
- {
- public void preInit(FMLPreInitializationEvent event)
- {
- super.preInit(event);
- }
-
- public void init(FMLInitializationEvent event)
- {
- super.init(event);
-
- MinecraftForgeClient.registerItemRenderer(ModWeapon.blade1, new RenderItemBlade());
- }
-
- public void postInit(FMLPostInitializationEvent event)
- {
- super.postInit(event);
- }
- }
- public class RenderItemBlade implements IItemRenderer
- {
- private IModelCustom model;
- private ResourceLocation texture;
- private static final ResourceLocation M = new ResourceLocation("rotate:textures/model/item/weapon/bladeX.obj");
-
- public RenderItemBlade()
- {
- model = AdvancedModelLoader.loadModel(M);
- texture = new ResourceLocation("rotate:textures/model/item/weapon/bladeX.png");
- }
- public boolean handleRenderType(ItemStack item, ItemRenderType type) {
-
- return true;
- }
- public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
-
- return true;
- }
- public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
- Minecraft.getMinecraft().renderEngine.bindTexture(this.texture);
- GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F);
- if (type == IItemRenderer.ItemRenderType.INVENTORY)
- {
- GL11.glTranslatef(0.5F, 0.37F, 0.0F);
- GL11.glRotatef(225.0F, 0.0F, 0.0F, 1.0F);
- GL11.glScaled(0.006, 0.025, 0.025);
- model.renderPart("bladeX");
- }
- if (type == IItemRenderer.ItemRenderType.EQUIPPED)
- {
- GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
- GL11.glRotatef(-12.0F, 0.0F, 0.0F, 1.0F);
- GL11.glTranslatef(-1.85F, -1.3F, 0.0F);
- GL11.glScaled(0.025, 0.025, 0.025);
- }
- if (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)
- {
- GL11.glTranslatef(0.5F, -1.3F, -1.0F);
- GL11.glRotatef(-45.0F, 0.0F, 1.0F, 0.0F);
- GL11.glTranslatef(0.5F, 1.0F, -0.9F);
- GL11.glRotatef(-47.0F, 0.0F, 0.0F, 1.0F);
- GL11.glScaled(0.025, 0.025, 0.025);
- }
- if (type == IItemRenderer.ItemRenderType.ENTITY)
- {
- GL11.glTranslatef(-3.0F, -0.5F, 0.0F);
- GL11.glScaled(0.025, 0.025, 0.025);
- }
- if (type != IItemRenderer.ItemRenderType.INVENTORY) {
- this.model.renderPart("这个是OBJ模型中的元件名");
- }
- }
- }
这样就可以了,记得要有OBJ模型,还要记得这个要写复制代码
- this.model.renderPart("这个是OBJ模型中的元件名");
看样子很像C#
Max_X 发表于 2018-2-2 15:32
我试试去 谢谢了
元件是什么?? 不太懂
LINYIPI 发表于 2018-2-2 12:07
RenderItem的代码
- public class RenderItemBlade implements IItemRenderer
- {
- private IModelCustom model;
- private ResourceLocation texture;
- private static final ResourceLocation M = new ResourceLocation("collapseworld:textures/model/bladeX.obj");
-
- public RenderItemBlade()
- {
- model = AdvancedModelLoader.loadModel(M);
- texture = new ResourceLocation("collapseworld:textures/items/bladeX.png");
- }
- public boolean handleRenderType(ItemStack item, ItemRenderType type) {
-
- return true;
- }
- public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
-
- return true;
- }
- public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
- Minecraft.getMinecraft().renderEngine.bindTexture(this.texture);
- GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F);
- if (type == IItemRenderer.ItemRenderType.INVENTORY)
- {
- GL11.glTranslatef(0.5F, 0.37F, 0.0F);
- GL11.glRotatef(225.0F, 0.0F, 0.0F, 1.0F);
- GL11.glScaled(0.006, 0.025, 0.025);
- model.renderPart("bladeX");
- }
- if (type == IItemRenderer.ItemRenderType.EQUIPPED)
- {
- GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
- GL11.glRotatef(-12.0F, 0.0F, 0.0F, 1.0F);
- GL11.glTranslatef(-1.85F, -1.3F, 0.0F);
- GL11.glScaled(0.025, 0.025, 0.025);
- }
- if (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)
- {
- GL11.glTranslatef(0.5F, -1.3F, -1.0F);
- GL11.glRotatef(-45.0F, 0.0F, 1.0F, 0.0F);
- GL11.glTranslatef(0.5F, 1.0F, -0.9F);
- GL11.glRotatef(-47.0F, 0.0F, 0.0F, 1.0F);
- GL11.glScaled(0.025, 0.025, 0.025);
- }
- if (type == IItemRenderer.ItemRenderType.ENTITY)
- {
- GL11.glTranslatef(-3.0F, -0.5F, 0.0F);
- GL11.glScaled(0.025, 0.025, 0.025);
- }
- if (type != IItemRenderer.ItemRenderType.INVENTORY) {
- this.model.renderPart("bladeX.obj");
- }
- }
- }
我弄的是这样的 没报错 但是 进游戏手上是空的 什么也没有
我拿了东西,别说我没拿。。
this.model.renderPart("obj中对象的名称");
LINYIPI 发表于 2018-2-3 08:42
this.model.renderPart("obj中对象的名称");
- # Blender v2.79 (sub 0) OBJ File: 'untitled.blend'
- # www.blender.org
- mtllib untitled.mtl
- o Cube
- v 1.000000 0.000000 -1.000000
- v 1.000000 0.000000 1.000000
- v -1.000000 0.000000 1.000000
- v -1.000000 0.000000 -1.000000
- v 1.000000 10.000000 -0.999999
- v 0.999999 10.000000 1.000001
- v -1.000000 10.000000 1.000000
- v -1.000000 10.000000 -1.000000
- vn 0.0000 -1.0000 0.0000
- vn 0.0000 1.0000 -0.0000
- vn 1.0000 0.0000 0.0000
- vn -0.0000 -0.0000 1.0000
- vn -1.0000 -0.0000 -0.0000
- vn 0.0000 0.0000 -1.0000
- usemtl Material
- s off
- f 1//1 2//1 3//1 4//1
- f 5//2 8//2 7//2 6//2
- f 1//3 5//3 6//3 2//3
- f 2//4 6//4 7//4 3//4
- f 3//5 7//5 8//5 4//5
- f 5//6 1//6 4//6 8//6
这个是我OJB的文件 哪个是名称。。。
Max_X 发表于 2018-2-3 11:34
这个是我OJB的文件 哪个是名称。。。
弄出来了 话说 if (type == IItemRenderer.ItemRenderType.INVENTORY) 代表的是在不同地方的渲染的大小方向吗?、
Max_X 发表于 2018-2-3 11:34
这个是我OJB的文件 哪个是名称。。。
不对啊 我假设一个模型是两个方块构成的 怎么同时渲染两个方块出来 填原件的话 只能渲染出一个