Отзеркаливание java моделей в коде

jopi

Попрошайка
1,421
30
260
Как вообще возможно отзеркалить java модели такого формата кодом, изменение размера в отрицательную сторону не принимается потому-что модель хоть и повернется но станет проблемной по виду

Java:
ModelRenderer Shape1;
ModelRenderer Shape2;
ModelRenderer Shape3;
ModelRenderer Shape4;
ModelRenderer Shape6;
ModelRenderer Shape5;
ModelRenderer Shape7;
ModelRenderer Shape8;
ModelRenderer Shape9;

public ModelRailStraight45Left0() {
    textureWidth = 64;
    textureHeight = 32;

    Shape1 = new ModelRenderer(this, 0, 0).addBox(0.5F, -2F, 0F, 1, 2, 10);
    Shape1.setTextureSize(64, 32).setRotationPoint(-15F, 24F, -7.5F);
    setRotation(Shape1, 0F, -0.7853982F, 0F);
    Shape1.mirror = true;
    Shape2 = new ModelRenderer(this, 0, 0).addBox(0F, -2F, 0F, 1, 2, 30);
    Shape2.setTextureSize(64, 32).setRotationPoint(14F, 24F, -8F);
    setRotation(Shape2, 0F, 0F, 0F);
    Shape2.mirror = true;
    Shape3 = new ModelRenderer(this, 0, 0).addBox(-0.5F, -1F, 0F, 2, 1, 10);
    Shape3.setTextureSize(64, 32).setRotationPoint(-14.5F, 22F, -7F);
    setRotation(Shape3, 0F, -0.7853982F, 0F);
    Shape3.mirror = true;
    Shape4 = new ModelRenderer(this, 0, 0).addBox(0F, 0F, 0F, 2, 1, 30);
    Shape4.setTextureSize(64, 32).setRotationPoint(13.5F, 21F, -8F);
    setRotation(Shape4, 0F, 0F, 0F);
    Shape4.mirror = true;
    Shape6 = new ModelRenderer(this, 0, 0).addBox(-1.5F, -2F, 4F, 1, 2, 30);
    Shape6.setTextureSize(64, 32).setRotationPoint(15F, 24F, 7.5F);
    setRotation(Shape6, 0F, -0.7853982F, 0F);
    Shape6.mirror = true;
    Shape5 = new ModelRenderer(this, 0, 0).addBox(-1.5F, 0F, 4F, 2, 1, 31);
    Shape5.setTextureSize(64, 32).setRotationPoint(15F, 21F, 7F);
    setRotation(Shape5, 0F, -0.7853982F, 0F);
    Shape5.mirror = true;
    Shape7 = new ModelRenderer(this, 0, 0).addBox(0F, 0F, 0F, 2, 3, 2);
    Shape7.setTextureSize(64, 32).setRotationPoint(-15F, 21F, -8F);
    setRotation(Shape7, 0F, 0F, 0F);
    Shape7.mirror = true;
    Shape8 = new ModelRenderer(this, 0, 0).addBox(0F, 0F, 0F, 1, 2, 30);
    Shape8.setTextureSize(64, 32).setRotationPoint(-15F, 22F, -1F);
    setRotation(Shape8, 0F, 0F, 0F);
    Shape8.mirror = true;
    Shape9 = new ModelRenderer(this, 0, 0).addBox(-1F, 0F, 0F, 2, 1, 30);
    Shape9.setTextureSize(64, 32).setRotationPoint(-14.5F, 21F, -1F);
    setRotation(Shape9, 0F, 0F, 0F);
    Shape9.mirror = true;
}
 

Icosider

Kotliner
Администратор
3,601
99
664
Так дублируй код, сдвигай, зеркаль текстуру и вуаля! Зеркальная модель готова!)

А если не хочешь мучений, то бери blockbench, только потом не забудь поправить код выходящего класса и лучше выбирай entity 1.12.2, а не 1.13+
 

jopi

Попрошайка
1,421
30
260
Так дублируй код, сдвигай, зеркаль текстуру и вуаля! Зеркальная модель готова!)

А если не хочешь мучений, то бери blockbench, только потом не забудь поправить код выходящего класса и лучше выбирай entity 1.12.2, а не 1.13+
blockbench мне не нравится по управлению, а это уже решил(просто переделал модели в программе, было легче и быстрее)
 

CumingSoon

Местный стендапер
1,634
12
269
Тогда можно попробовать преобразование Хаусхолдера. По идее, посчитаешь матрицу через плоскость, которая тебе нужна(я не помню, какие там параметры нужны, но скорее всего нормаль и число, задающие плоскость). Потом эту матрицу, как мне кажется, можно будет загрузить как model matrix, тогда рендер отразится. Проблема только в том, что в fixed pipeline нет model matrix, только modelview. Но я думаю, что что-нибудь придумать можно
Ну и простой вариант - просто все вершины через то же преобразование отзеркалить на стороне ЦПУ и рисовать уже без всяких матриц.
Алсо, что-нибудь ещё может быть в glu, если она ещё идёт с майном.
Во всяком случае, самое лёгкое решение - зеркальнуть в редакторе, я рассказал о таких общих случаях.
 
Сверху