334 words
2 minutes
18 OBJ模型
前言
以下的内容大量参考了https://boson.v2mcdev.com/specialmodel/obj.html
OBJ模型
添加一个方块类
不在赘述
public class ObsidianObj extends Block {
public ObsidianObj() {
super(BlockBehaviour.Properties.ofFullCopy(Blocks.STONE).noOcclusion());
}
}
注册方块
public static final Supplier<Block> OBSIDIAN_OBJ = registerBlock("obsidian_obj", ObsidianObj::new);
添加到创造模式物品栏
略
模型和材质
如果你对OBJ模型的一些术语不了解,这里建议先去了解下。这是一个简短的说明
存放位置
├─assets
│ └─examplemod
│ ├─blockstates
│ ├─lang
│ └─models
│ ├─block
│ ├─obsidian_obj.json
│ ├─obsidian_obj.obj
│ ├─obsidian_obj.mtl
│ └─item
json文件的内容,使用loader为neoforge加载obj格式的模型,通过model指明模型的具体位置,flip_v设置为true是因为blender中的材质和minecraft中材质是上下颠倒的,需要手动反转。
{
"loader": "neoforge:obj",
"model": "modid:models/block/obsidian_obj.obj",
"flip_v": true
}
需要修改的地方
修改obj模型文件中的
mtllib obsidian_obj.mtl
修改mtl文件中
map_Kd examplemod:block/obsidian_obj
将材质存放在材质的文件夹中即可。
生成blockstate
this.addWithHaveModel(ModBlocks.OBSIDIAN_OBJ.get(),"obsidian_obj");
常见坑处理方法
以下的内容摘自https://boson.v2mcdev.com/specialmodel/obj.html
环境光遮蔽
夜晚的不自然光
开发小课堂
如果你在使用Blender制作OBJ模型,请将你的模型中心点设置为X:0.5m,Y-0.5m,Z:0.5,这样你就不需要在json文件中进行额外的偏移计算了。Minecraft一个满方块在Blender里刚好是1m1m1m。
详细见: https://boson.v2mcdev.com/specialmodel/obj.html