Сложная модель

Не знаю есть ли такой вопрос или нет.. А если и есть то на запрос "сложная модель" и "модель со скосами" ничего не нашлось.И так..

  • В чем можно создать модель того же цилиндра что бы результат можно было запихать, так по по задумке мне нужно создать блок который имеет по бокам некие цилиндры.. и хотелось как минимум видеть 8гранник.
  • Как полученное чуда впихнуть в мод? Или тут близкая тема будет как у обычного "блока-модель"
  • Можно ли части модели (в том редакторе через который мона все это сделать) заставить работать отдельно?
 
Подобная была, давно.
Есть несколько способов: сделать Tessellator'ом или через любой 3D редактор который экспортирует .*obj файлы.
Если имеется о модели у которые будет округлые углы при рендере, то это пока-что точно не известно мне. Мне известно, что это можно сделать округлыми за счёт шейдоров, вот каких пока-что не знаю.
 
timaxa007 написал(а):
Мне известно, что это можно сделать округлыми за счёт шейдоров, вот каких пока-что не знаю.
Да, это нормал маппинг называется.
6487-normal.jpg

Это карта нормалей высокополигональной сферы, она через шейдер применяется к обычной низкополигональной сфере -> PROFIT.
 
Ну можно сказать.. что нужно получить нечто вроде низко полигоного целиндра. ну там в 8 или 16 ребер.
И да.. коль так.. то как мне задать размер? что бы попасть в размер блока?
 
От нуля до единицы.
Типа такие измерения я использую в редакторе.
0 - 0
1 - 0,0625
2 - 0,125
3 - 0,1875
4 - 0,25
5 - 0,3125
6 - 0,375
7 - 0,4375
8 - 0,5
9 - 0,5625
10 - 0,625
11 - 0,6875
12 - 0,75
13 - 0,8125
14 - 0,875
15 - 0,9375
16 - 1
[merge_posts_bbcode]Добавлено: 11.08.2014 16:12:53[/merge_posts_bbcode]

Ну я во-основном в 3D редакторе я делаю от -0,5 до 0,5, при том я его в коде изменяю его положение, чтобы он был в центре.
 
То есть к примеру и беру и в том же максе делаю к примеру куб который будет размеров в 1 единицу макса, ставлю ее в цент и получу нечто вроде модели куба(невероятна мега модель куба, остерегайтесь подделок).

А такую модель можно ли кодами изменять, заставить к примеру часть модели вращаться?
 
Да можно, чтобы и вращалось и изменял своё место положение. У блока через его собственный TileEntity берутся переменные по перемещению. (Пока-что рабочей версии у меня нет, но могу сделать если надо.)
 
Ну за пример буде очень рад. Так как порой подобного не хватает что бы понять как надо.
 
Создание и добавление *.obj - http://www.twitch.tv/timaxa007/b/556971637
Потом добавил, что он типа хоть как-то двигался, так как не смог хоть какие-то придумать условия для него.
[youtube]R_snX9TsN5E[/youtube]
Proxy клиента и сервера обрезные.

Код:
@Mod (modid = PackInfo.MODID, name = PackInfo.MODNAME, version = PackInfo.VERSION)
@NetworkMod (clientSideRequired = true, serverSideRequired = false)

public class PackFurniture {
@Instance(PackInfo.MODID) public static PackFurniture instance;
@SidedProxy(clientSide = "mods.timaxa007.Pack.Furniture.ProxyClient", serverSide = "mods.timaxa007.Pack.Furniture.ProxyServer")
public static ProxyServer proxy;

@EventHandler
public void init(FMLInitializationEvent event) {
proxy.init();
}

@EventHandler
public void preInit(FMLPreInitializationEvent event) {
proxy.preInit(event);
}

}

ProxyServer
Код:
public class ProxyServer {

public static Block block_cylinder;
public static int block_cylinder_blockID;
public static int render_block_cylinder_modelID;

public void init() {
block_cylinder = new BlockCylinder(block_cylinder_blockID);
GameRegistry.registerBlock(block_cylinder, "BlockCylinder");
render_block_cylinder_modelID = -1;
GameRegistry.registerTileEntity(TileEntityBlockCylinder.class, "TileEntityBlockCylinder");
}

public void preInit(FMLPreInitializationEvent event) {

Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
cfg.load();
block_cylinder_blockID = cfg.getBlock("block_cylinder", 2200).getInt();
cfg.save();
}

}

Код:
public class ProxyClient extends ProxyServer {

@Override
public void init() {
super.init();
render_block_cylinder_modelID = RenderingRegistry.getNextAvailableRenderId();
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlockCylinder.class, new RenderBlockCylinder());
MinecraftForgeClient.registerItemRenderer(PackFurniture.proxy.block_cylinder.blockID, new ItemRenderBlockCylinder());
}

public void preInit(FMLPreInitializationEvent event){
super.preInit(event);
}

}

Код:
public class BlockCylinder extends Block implements ITileEntityProvider {

public BlockCylinder(int id) {
super(id, Material.iron);
setCreativeTab(PackFurniture.proxy.tabFurniturePack);
setTextureName("iron");
setUnlocalizedName("cylinder");
}

@Override
public TileEntity createNewTileEntity(World world) {return new TileEntityBlockCylinder();}

public int getRenderType() {return PackFurniture.proxy.render_block_cylinder_modelID;}
public boolean isOpaqueCube() {return false;}
public boolean renderAsNormalBlock() {return false;}

}

Код:
public class TileEntityBlockCylinder extends TileEntity {

public float rot_x = 0.0F;
public float rot_y = 0.0F;

public TileEntityBlockCylinder() {

}

public void updateEntity() {
rot_x += 0.1F;
rot_y += 0.2F;
if (rot_x > 255) {rot_x = 0;}
if (rot_y > 255) {rot_y = 0;}
}

}

Код:
public class RenderBlockCylinder extends TileEntitySpecialRenderer {
private IModelCustom model;

public RenderBlockCylinder() {
model = AdvancedModelLoader.loadModel("/assets/timaxa007/obj/cylinder.obj");
}

@Override
public void renderTileEntityAt(TileEntity te, double dx, double dy, double dz, float f) {
renderTE((TileEntityBlockCylinder)te, dx, dy, dz, f);
}

private void renderTE(TileEntityBlockCylinder te, double dx, double dy, double dz, float f) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glTranslated(dx, dy, dz);
GL11.glTranslatef(0.5F, 0.0F, 0.5F);
GL11.glRotatef(-90F, 1.0F, 0.0F, 0.0F);
if (te != null) {
GL11.glRotatef(0F + te.rot_x, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(0F + te.rot_y, 0.0F, 0.0F, 1.0F);
}
bindTexture(new ResourceLocation("minecraft", "textures/blocks/anvil_base.png"));
model.renderAll();
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}

}

Код:
public class ItemRenderBlockCylinder implements IItemRenderer {
private IModelCustom model;

public ItemRenderBlockCylinder() {
model = AdvancedModelLoader.loadModel("/assets/timaxa007/obj/cylinder.obj");
}

@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}

@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}

@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
GL11.glPushMatrix();
GL11.glTranslatef(0.5F, 0.0F, 0.5F);
GL11.glRotatef(-90F, 1.0F, 0.0F, 0.0F);
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("minecraft", "textures/blocks/anvil_base.png"));
model.renderAll();
GL11.glPopMatrix();
}

}
[merge_posts_bbcode]Добавлено: 11.08.2014 19:29:27[/merge_posts_bbcode]

Код для Minecraft 1.6.4. Если "cylinder.obj" будет нужен, напишешь.
 
Такое, по-моему, можно в Techne сделать, нагрузка меньше будет.
 
Majestic, а по-мойму в Techne, только боксы можно экспортировать для Minecraft.
[merge_posts_bbcode]Добавлено: 11.08.2014 19:38:14[/merge_posts_bbcode]

raspad realt, если что могу и на Tessellator'е сделать, если конечно тебе нужно.
 
Ну так боксы можно повернуть и будет цилиндр =)
 
Один вопрос по теме..
Можно ли сочетать в одном блоке и *.obi файл и блок. Так как есть идея аля провода вокруг которого вращается кольцо. Или прошее сделать и кольцо и провод в формате модели?
 
Ставить значение 1 (стандартная модель блока) в методе "getRender()" (или во-обще его не писать) в блоке и "ClientRegistry.bindTileEntitySpecialRenderer". Это один из методов, есть другой, но я его ещё не особо освоил.
 
Привет парни, я с брательником разрабатываю мод, так как мы новечьки в этом деле, то будет куча вопросов, надеюсь на вашу помощь, вы вроде бы люди адекватные :).
Так как я занимаюсь именно моделями и текстурами для Мода, у меня возник вопрос, насколько сложная может быть модель? Сколько максимально допустимо может быть полигонов? Какие ограничения имеются к моделе, дабы максимально избежать КРЭША? Я работаю в Blender`e может быть подскажите какой нибудь Аддон для Блендера под Майнкрафт?

 
Riko174, ...
Сложность модели, я только работал с легкими, а с высокими без понятия.
Максимальное количество для модели не было замечено, но большое количество полигонов могут снизить производительность.
Ограничения, синтаксис имени и не использовать сложные модификаторы (т.е. ни чего лишнего быть [геометрия, координаты текстуры и не обязательно сглаженные группы геометрии]).
Аддон для блендера, чтобы был совместим с майнкрафтом, вроде нету такого. Forge для Minecraft и экспорт моделей в *.obj формат.
[merge_posts_bbcode]Добавлено: 22.12.2014 11:34:50[/merge_posts_bbcode]

Модель на скриншоте... трудно сказать, будет лагать из-за него или нет (он явно будет entity).
 
timaxa007 написал(а):
Riko174, ...
Сложность модели, я только работал с легкими, а с высокими без понятия.
Максимальное количество для модели не было замечено, но большое количество полигонов могут снизить производительность.
Ограничения, синтаксис имени и не использовать сложные модификаторы (т.е. ни чего лишнего быть [геометрия, координаты текстуры и не обязательно сглаженные группы геометрии]).
Аддон для блендера, чтобы был совместим с майнкрафтом, вроде нету такого. Forge для Minecraft и экспорт моделей в *.obj формат.
[merge_posts_bbcode]Добавлено: 22.12.2014 11:34:50[/merge_posts_bbcode]

Модель на скриншоте... трудно сказать, будет лагать из-за него или нет (он явно будет entity).

Что вы подрузамиваете под координатом текстур UWN Wrap ?
 
Riko174, твой вопрос находиться внутри цитаты.
Я не знаю что-за "UWN Wrap", так как я не пользуюсь Blender'ом, но вроде он.
[merge_posts_bbcode]Добавлено: 22.12.2014 23:22:26[/merge_posts_bbcode]

В моём 3D ркдакторе (3D's Max 8) модификатор называется "Unwrap UVW", когда я экпортирую модель я модификатор предварительно применяю на редактируемый объект.
90ef6a91ead78bd1d923eddbee288f0c.png

Ссылка на скриншот.
 
timaxa007 написал(а):
Riko174, твой вопрос находиться внутри цитаты.
Я не знаю что-за "UWN Wrap", так как я не пользуюсь Blender'ом, но вроде он.
[merge_posts_bbcode]Добавлено: 22.12.2014 23:22:26[/merge_posts_bbcode]

В моём 3D ркдакторе (3D's Max 8) модификатор называется "Unwrap UVW", когда я экпортирую модель я модификатор предварительно применяю на редактируемый объект.
90ef6a91ead78bd1d923eddbee288f0c.png


Ссылка на скриншот.

Ну это тоже самое, возможно я не правильно выразился. Я так понимаю этот модификатор не желательно применять к модели? Как тогда быть с текстурами...
 
Назад
Сверху