[1.7.10/1.6.4]: Примеры рендеров ... для предмета и блока.

Есть ли какая-то разница между рендером techne и obj, отражается ли это как-то на свойствах блока или предмета?
 

timaxa007

Модератор
5,831
409
672
4el0vek, да разница есть. Модели из Techne импортируются и рендерится с некоторыми поправками. А модели Obj формата импортируются с помощью метода "AdvancedModelLoader.loadModel" и так-же с некоторыми поправками. В каком смысле: "отражается ли это как-то на свойствах блока или предмета"? Рендер, как рендер.
- На счёт оптимизации, типа: "Будет падать FPS больше от Obj формата, чем от Techne." - понятия не имею.
- На счёт удобности, где моделлировать зависит от мастерства, кто его делает.
 
7,099
324
1,510
У меня краш, почему-то(
Что не так?
[merge_posts_bbcode]Добавлено: 28.04.2015 14:00:03[/merge_posts_bbcode]

Вот сам краш:
---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.

Time: 28.04.15 12:57
Description: Initializing game

java.lang.IllegalArgumentException: Duplicate id: TileCrystal
at net.minecraft.tileentity.TileEntity.addMapping(TileEntity.java:50)
at cpw.mods.fml.common.registry.GameRegistry.registerTileEntity(GameRegistry.java:275)
at perfectengenering.Main.preInit(Main.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:513)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:118)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:513)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:239)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
at net.minecraft.client.Minecraft.run(Minecraft.java:931)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at net.minecraft.tileentity.TileEntity.addMapping(TileEntity.java:50)
at cpw.mods.fml.common.registry.GameRegistry.registerTileEntity(GameRegistry.java:275)
at perfectengenering.Main.preInit(Main.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:513)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:118)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:513)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:239)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)

-- Initialization --
Details:
Stacktrace:
at net.minecraft.client.Minecraft.run(Minecraft.java:931)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.7.0_75, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 787013976 bytes (750 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 18 mods loaded, 18 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized
FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized
Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized
appliedenergistics2-core{rv1-stable-1} [AppliedEnergistics2 Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized
CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized
NotEnoughItems{1.0.4.83} [Not Enough Items] (NotEnoughItems-1.7.10-1.0.4.83-universal.jar) Unloaded->Constructed->Pre-initialized
ThaumicTinkerer-preloader{0.1} [Thaumic Tinkerer Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized
Baubles{1.0.1.10} [Baubles] (Baubles-1.7.10-1.0.1.10.jar) Unloaded->Constructed->Pre-initialized
Thaumcraft{4.2.3.5} [Thaumcraft] (Thaumcraft-deobf-1.7.10-4.2.3.5.jar) Unloaded->Constructed->Pre-initialized
examplemod{1.0} [Example Mod] (bin) Unloaded->Constructed->Pre-initialized
perfectengenering{1.0} [PerfectEngenering] (bin) Unloaded->Constructed->Errored
appliedenergistics2{rv1-stable-1} [Applied Energistics 2] (appliedenergistics2-rv1-stable-1.jar) Unloaded->Constructed->Pre-initialized
AWWayofTime{v1.3.0b} [Blood Magic: Alchemical Wizardry] (BloodMagic-1.7.10-1.3.0b-3.jar) Unloaded->Constructed->Pre-initialized
Botania{r1.6-173} [Botania] (Botania r1.6-173.jar) Unloaded->Constructed->Pre-initialized
ThaumicTinkerer{unspecified} [Thaumic Tinkerer] (ThaumicTinkerer-2.5-1.7.10-162.jar) Unloaded->Constructed->Pre-initialized
ForbiddenMagic{1.7.10-0.552} [Forbidden Magic] (Forbidden Magic-1.7.10-0.552.jar) Unloaded->Constructed->Pre-initialized
thaumicenergistics{0.8.7.2b-rv1} [Thaumic Energistics] (thaumicenergistics-0.8.7.2b-rv1_rus.jar) Unloaded->Constructed->Pre-initialized
bspkrsCore{6.16} [bspkrsCore] ([1.7.10]bspkrsCore-universal-6.16.jar) Unloaded->Constructed->Pre-initialized
AE2 Version: stable rv1-stable-1 for Forge 10.13.0.1187
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: GeForce GT 610/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.25, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: Русский (Россия)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
 
7,099
324
1,510
timaxa007 написал(а):
hohserg написал(а):
Код:
Duplicate id: TileCrystal
У тебя уже есть зарегистрированный "TileCrystal".
ууу, да, как же я лохонулся) спасибо, timaxa007
[merge_posts_bbcode]Добавлено: 28.04.2015 14:06:53[/merge_posts_bbcode]

GloomyFolken написал(а):
Потому что лог читать надо.
Я когда лог читаю, то конкретно не понимаю, че не так, только вижу, в какой строчке проблема.
 
7,099
324
1,510
Я, как будто, каждую ошибку знаю, + я с java недавно познакомился)
 
7,099
324
1,510
Все равно) Там мне многое не понятно, поэтому я часто просто спрашиваю более знающих людей, нежели сам копаться...
 
1,976
68
220
Большое тебе спасибо, Timaxa, очень полезный туториал, а главное всё работает и никаких непоняток :D
 

svk

1,185
2
Непонятно зачем ты в ModelBlock рендеришь блок через ModelRenderer. Зачем тогда тебе вообще ModelBlock?

А как рендерить течин блок я так и не понял, там требует углы, откуда их брать?
[merge_posts_bbcode]Добавлено: 29.02.2016 18:52:48[/merge_posts_bbcode]

А, ну видимо это просто для поворотов...
 

timaxa007

Модератор
5,831
409
672
svk написал(а):
Зачем тогда тебе вообще ModelBlock?
ModelBlock это модель сделана в Techne и слегка изменёна мной код этой модели. показывал пример рендера блока модели из Techne и слегка изменёна мной код этой модели.

svk написал(а):
А как рендерить течин блок я так и не понял, там требует углы, откуда их брать?
RenderTileEntityTechne. Методом "проб и ошибок" использовал это:
Код:
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
Без него у меня модели рендереться верх ногами.
 

timaxa007

Модератор
5,831
409
672
Обновил код для obj предмета и блока версии 1.7.10, добавив код используя типа как в " Ускорение рендера моделей ", но из ModelRenderer.compileDisplayList(float).
(github.com) sub_mod_obj_block_1_7_10
(github.com) sub_mod_obj_item_1_7_10
В тестах в eclipce было всё в порядке.
Когда модель для предмета или блока не одна, можно использовать HashMap<Block, int[]> и HashMap<Item, int[]>, или HashMap<String, int[]>.
Но подобную систему можно по разному писать.
 
Последнее редактирование:

timaxa007

Модератор
5,831
409
672
Исправил код в посте #36.
Забыл поставить return'ы в классе ProxyClient для методов первых условий getRenderAll и getRenderPart. Т.е. HashMap постоянно пытался добавиться новый экземпляр и память GPU засорял. Заметил что не так, когда броню создавал, при двух надетых вещах сильно проседал фпс.
 
Сверху