- 378
- 1
Привет форумчане, сегодня я научу делать вас 3D рендер!:3
Существуют два рендера (Возможно и больше, но знаю только два)
Это модели - Techne и Obj
Сейчас расскажу о плюсах и минусах течне модели и обж модели.
Techne модель - можно делать шейпов сколько хочешь, но кода естественно становиться больше.
Obj модель - рендерить проще, чем создать ведро с жидкостью по туториалам, но кол-во полигонов не должно привышать ~1000.
Так начнем создавать наш первый 3D рендер OBJ модели!(Покажу только obj,потому что рендером они похожи)
Весь исходный код я конечно выкладывать не буду, но большинство кода я естественно обьясню))
Начнем, все буду описывать по порядку.
1)Делаем регистрацию рендера предмета таким образом.
1.1)Заходим в ClientProxy и добовляем строчку -
MinecraftForgeClient.registerItemRenderer(CoreMod.test.itemID, new TestRenderer());
CoreMod.test.itemID //заместо test пишем ваш айдишник, но не цифру.
TestRenderer - класс с рендером модели.
На этом работа с прокси у нас заканчивается, но подождите господа, начинается самая морока))
Создаем наш TestRenderer и здесь я буду описывать все поочередно.
Первое что надо сделать, это поставить IItemRenderer. Код - public class RenderRifle implements IItemRenderer {
Так,мы сделали имплемент на РендерПредмета.
После первой фигурной скобки пишем это -
private static IModelCustom model; //Это не трогать!!
private static Hand model1; //Создать класс с руками, если рук нету и нету рендера - УДАЛИТЬ!!
Итак, мы объявили, что у нас есть кастомная модель и вторая модель, которая будет рендериться вместе с ней.(Так можно сделать двуручное оружие:3)
Итак
Дальше мы пишем примерно это -
public TestRenderer() {
model = AdvancedModelLoader.loadModel("/assets/yourid/obj/youmodel.obj"); //Путь к модели
model1 = new Hand(); //Рендер рук, если нету - УДАЛИТЬ!!
}
Помните, мы объявляли IModelCustom как model.Ну так вот, это сократило нам код в несколько букв(как много господи, 10 из 10).
Дальше пишем код, ну просто вписываем D
public boolean handleRenderType(ItemStack is, ItemRenderType type) {
return type != ItemRenderType.INVENTORY;
}
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack is, ItemRendererHelper helper) {
return true;
}
Это мы написали(фиг знает что) и вообщем положите на это вашу толстую ляшку.
Дальше идет весь код рендера, обьясню почти каждую сточку комментариями, то есть //
public void renderItem(ItemRenderType type, ItemStack is, Object ... data) {
GL11.glPushMatrix(); // Не трогать
GL11.glEnable(3042); // Не трогать
GL11.glBlendFunc(770, 771); // Не трогать
GL11.glTranslatef(-0.6F, 1.3F, 0.5F); // Поворот модели, потренируйтесь.
GL11.glRotatef(-45.0F, 0.0F, 1.0F, 0.0F); // -45 это градусы, остальное лучше не трогать
GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);// 180 это градусы, остальное лучше не трогать
GL11.glScaled(3D, 3D, 3D); // Размеры самой модели
Minecraft.getMinecraft().renderEngine.bindTexture(tex); // Текстура.
model.renderAll(); //Не трогать
GL11.glDisable(3042); //Не трогать
GL11.glPopMatrix(); //Не трогать
}
Итак, мы написали код рендера и попробывали его изменить.
И да ,я забыла о переменной tex.
Куда мы писали private static IModelCustom model;
Ниже пишем этот код - private static ResourceLocation tex = new ResourceLocation("yourmodid", "/obj/test.png"); // Текстура
И вот, мы заходим в игру, и получаем РЕЗУЛЬТАТ!
Это наверное первая ваша 3D модель..
Если что-то не получается, пишите в этой теме - обьясню как сделать почти все.
Скоро сделаю туториал как рендерить Techne модель, но уже с руками.
Те, кто знает больше меня в этой штуке - не ругайтесь, первый Туториал)))
Ну что, рендерите свои предметы.Удачи в работе)))
Существуют два рендера (Возможно и больше, но знаю только два)
Это модели - Techne и Obj
Сейчас расскажу о плюсах и минусах течне модели и обж модели.
Techne модель - можно делать шейпов сколько хочешь, но кода естественно становиться больше.
Obj модель - рендерить проще, чем создать ведро с жидкостью по туториалам, но кол-во полигонов не должно привышать ~1000.
Так начнем создавать наш первый 3D рендер OBJ модели!(Покажу только obj,потому что рендером они похожи)
Весь исходный код я конечно выкладывать не буду, но большинство кода я естественно обьясню))
Начнем, все буду описывать по порядку.
1)Делаем регистрацию рендера предмета таким образом.
1.1)Заходим в ClientProxy и добовляем строчку -
MinecraftForgeClient.registerItemRenderer(CoreMod.test.itemID, new TestRenderer());
CoreMod.test.itemID //заместо test пишем ваш айдишник, но не цифру.
TestRenderer - класс с рендером модели.
На этом работа с прокси у нас заканчивается, но подождите господа, начинается самая морока))
Создаем наш TestRenderer и здесь я буду описывать все поочередно.
Первое что надо сделать, это поставить IItemRenderer. Код - public class RenderRifle implements IItemRenderer {
Так,мы сделали имплемент на РендерПредмета.
После первой фигурной скобки пишем это -
private static IModelCustom model; //Это не трогать!!
private static Hand model1; //Создать класс с руками, если рук нету и нету рендера - УДАЛИТЬ!!
Итак, мы объявили, что у нас есть кастомная модель и вторая модель, которая будет рендериться вместе с ней.(Так можно сделать двуручное оружие:3)
Итак
Дальше мы пишем примерно это -
public TestRenderer() {
model = AdvancedModelLoader.loadModel("/assets/yourid/obj/youmodel.obj"); //Путь к модели
model1 = new Hand(); //Рендер рук, если нету - УДАЛИТЬ!!
}
Помните, мы объявляли IModelCustom как model.Ну так вот, это сократило нам код в несколько букв(как много господи, 10 из 10).
Дальше пишем код, ну просто вписываем D
public boolean handleRenderType(ItemStack is, ItemRenderType type) {
return type != ItemRenderType.INVENTORY;
}
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack is, ItemRendererHelper helper) {
return true;
}
Это мы написали(фиг знает что) и вообщем положите на это вашу толстую ляшку.
Дальше идет весь код рендера, обьясню почти каждую сточку комментариями, то есть //
public void renderItem(ItemRenderType type, ItemStack is, Object ... data) {
GL11.glPushMatrix(); // Не трогать
GL11.glEnable(3042); // Не трогать
GL11.glBlendFunc(770, 771); // Не трогать
GL11.glTranslatef(-0.6F, 1.3F, 0.5F); // Поворот модели, потренируйтесь.
GL11.glRotatef(-45.0F, 0.0F, 1.0F, 0.0F); // -45 это градусы, остальное лучше не трогать
GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);// 180 это градусы, остальное лучше не трогать
GL11.glScaled(3D, 3D, 3D); // Размеры самой модели
Minecraft.getMinecraft().renderEngine.bindTexture(tex); // Текстура.
model.renderAll(); //Не трогать
GL11.glDisable(3042); //Не трогать
GL11.glPopMatrix(); //Не трогать
}
Итак, мы написали код рендера и попробывали его изменить.
И да ,я забыла о переменной tex.
Куда мы писали private static IModelCustom model;
Ниже пишем этот код - private static ResourceLocation tex = new ResourceLocation("yourmodid", "/obj/test.png"); // Текстура
И вот, мы заходим в игру, и получаем РЕЗУЛЬТАТ!
Это наверное первая ваша 3D модель..
Если что-то не получается, пишите в этой теме - обьясню как сделать почти все.
Скоро сделаю туториал как рендерить Techne модель, но уже с руками.
Те, кто знает больше меня в этой штуке - не ругайтесь, первый Туториал)))
Ну что, рендерите свои предметы.Удачи в работе)))