Rendu complexe de bloc via ISBRH
-
je vien de faire un post dans le section support pour moddeur
-
que mettre pour que le rendu dans l’inventaire sois celui d’un bloc?
-
Est il possible de mettre des angles sur ce type de rendu ?
-
@‘isador34’:
que mettre pour que le rendu dans l’inventaire sois celui d’un bloc?
Logiquement, tu fais un blockbound de 0, 0, 0, 1, 1,1.
@‘vroulas’:
Est il possible de mettre des angles sur ce type de rendu ?
Je ne crois pas, mais je suis pas sûr, les rendus ISBRH ne sont pas mon point fort.
-
@‘vroulas’:
Est il possible de mettre des angles sur ce type de rendu ?
Je ne crois pas, mais je suis pas sûr, les rendus ISBRH ne sont pas mon point fort.
je ne crois pas, il faudrait passé par in TESR pour ca
et pour ```java
private void renderInInventoryque mettre a la place de ```java tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1F, 1.0F); renderer.renderFaceYNeg(block, 1.0D, 1.0D, 1.0D, block.getIcon(0, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1.0F); renderer.renderFaceYPos(block, 1.0D, 1.0D, 1.0D, block.getIcon(1, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1F); renderer.renderFaceZNeg(block, 1.0D, 1.0D, 1.0D, block.getIcon(2, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1.0F); renderer.renderFaceZPos(block, 1.0D, 1.0D, 1.0D, block.getIcon(3, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1F, 1.0F, 1.0F); renderer.renderFaceXNeg(block, 1.0D, 1.0D, 1.0D, block.getIcon(4, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1.0F); renderer.renderFaceXPos(block, 1.0D, 1.0D, 1.0D, block.getIcon(5, metadata)); tessellator.draw(); GL11.glTranslatef(1F, 1F, 1F); ``` car ça c'est le code de la table…
-
Non, ce code c’est pour tout. Tu n’as pas à le modifier.
C’est ça qui fait le rendu dans l’inventaire :@Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; renderer.setRenderBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.1F, 0.8F); this.renderInInventory(tessellator, renderer, block, metadata); renderer.setRenderBounds(0.45F, 0.1F, 0.45F, 0.55F, 0.8F, 0.55F); this.renderInInventory(tessellator, renderer, block, metadata); renderer.setRenderBounds(0.0F, 0.8F, 0.0F, 1F, 0.9F, 1F); this.renderInInventory(tessellator, renderer, block, metadata); }
Il faut que tu change les renderer.setRenderBounds. Il faut mettre les mêmes que pour le rendu sur la map.
-
ok merci
-
Très bon tuto , il simplifie vraiment le modding
-
Est-il possible de faire que quand on place un block il soit tourner vers nous ?
-
Possible oui, suffit d’utiliser la fonction pour changer le metadata en fonction de la direction (cf : onBlockPlacedBy dans le tutoriel sur les blocs directionnels) et de faire le rendu en fonction du metadata du bloc.
Ou alors tu passe par un tile entity. -
@‘robin4002’:
Possible oui, suffit d’utiliser la fonction pour changer le metadata en fonction de la direction (cf : onBlockPlacedBy dans le tutoriel sur les blocs directionnels) et de faire le rendu en fonction du metadata du bloc.
Ou alors tu passe par un tile entity.Je comprend mais je vois pas comment je doit faire xD
-
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack) { int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3; world.setBlockMetadataWithNotify(x, y, z, direction, 2); }
à mettre dans la classe du bloc.
Et dans la classe de ton rendu, dans la fonction renderWorldBlock, tu fais des conditions :if(world.getBlockMetadata(x, y, z) == 0) { // le code de rendu dans un sens } else if(world.getBlockMetadata(x, y, z) == 1) { // le code de rendu dans l'autre sens }
etc …
Sinon tu peux aussi essayer de mettre une seule fois le code du rendu comme ça :GL11.glPushMatrix(); GL11.glRotatef(90 * world.getBlockMetadata(x, y, z), 0.0F, 1.0F, 0.0F); // le code du rendu GL11.glPopMatrix();
Mais je ne suis pas sûr que ça va fonctionner, il me semble que ça créer des problèmes de rendu avec tout le monde.
-
Encore Merci Robin ça fonctionne
-
Bon encore un bug etrange enfete dans la texture du block il y a une partie transparente donc j’ai mis ceci
/** * Returns which pass should this block be rendered on. 0 for solids and 1 for alpha */ @SideOnly(Side.CLIENT) public int getRenderBlockPass() { return 1; }
Mais cette fonction fais buger le render( des parties disparaissent et réapparaissent) !
-
Je voudrais savoir si c’était possible d’effectuer des rotations sur les “bouts” de blocs que l’ont créé, si oui, comment ?
Et existe-t-il des logiciels pour simplifier la création de ce genre de rendu ?
Merci beaucoup -
Il existe plusieurs logiciel qui te permettent de crée un model d’y rajouter une textures puis de l’implenter dans ton code personnellment
j’utililise Model creator de mrcrayfish voici le site il est gratuit et très simple d’utilisation -
@‘Tristepin’:
Il existe plusieurs logiciel qui te permettent de crée un model d’y rajouter une textures puis de l’implenter dans ton code personnellment
j’utililise Model creator de mrcrayfish voici le site il est gratuit et très simple d’utilisationOui mais ce n’est pas le même genre de model. Ça c’est pour des model en .json, là il est question de model via ISBRH (qui n’existe plus en 1.8, si je ne me trompe pas.)
-
Les rendus ISBRH ne permettent pas d’effectuer des rotations.
-
Bonjour, pourrais-t-on m’expliquer comment fonctionne les textures d’un ISBRH?
Forcément 16*16? Quelles sont les limites? Est ce simplement une projection des textures sur chaque face (ce qui implique des formes simples, sans renfoncement)?
-
Les textures des ISBRH fonctionnent comme les textures des blocs normaux, c’est un iicon qui représente une texture de 16x16.
Tu as donc les mêmes possibilités (changer l’icon en fonction du side, ou de IBlockAccess + x + y + z) et les mêmes limitations.