ПРошу помощи переделать java прогу.

471
5
В общем есть 1 утилита. Называется "Javatotcn". Она модель в формате java переводит в Techne модель.
Загвостка в том, что java модели, экспортированные из CraftStudio имеют немного другой вид, нежели java модели, экспортированные из Techne.

Короче, когда утилита конвертирует java модель из CraftStudio, То она не дописывает в .xml файл модели:
• <IsMirrored>False</IsMirrored> (должно стоять после <IsFixed>False</IsFixed>)
• <Rotation>x,y,z</Rotation>
• </Shape>

Помогите, пожалуйста. Подкорректируйте утилиту. 
P.S. эту утилиту делал Никита Логачев

https://yadi.sk/d/tGeLprKJg7y5i
 
905
5
Не вижу большой проблемы, если честно. Текне в жабу тоже с потерями конвертирует.
 
471
5
laz2727 написал(а):
Не вижу большой проблемы, если честно. Текне в жабу тоже с потерями конвертирует.

Проблема в том, что при конвертации java модели, экспортированной из КрафтСтудио, утилита не добавляет некоторые пункты, которые я описал выше. Без этих выражений в течне модель не открыть.
Я конечно понимаю, можно и вручную, но если модель из нескольких сотен шепов, то это нереально.

надеюсь мне кто-нибудь поможет.
 
471
5
В общем есть вот такой java код модели (это экспорт модели из CraftStudio):

Код:
package net.minecraft.src;

public class ModelModel2 extends ModelBase
{
    ModelRenderer Block;
    ModelRenderer Block1;
    ModelRenderer Block2;

    public ModelModel2()
    {
        this( 0.0f );
    }

    public ModelModel2( float par1 )
    {
        Block = new ModelRenderer( this, 0, 0 );
        Block.setTextureSize( 64, 32 );
        Block.addBox( -8F, -8F, -8F, 16, 16, 16);
        Block.setRotationPoint( 0F, -8F, 22F );
        Block1 = new ModelRenderer( this, 0, 0 );
        Block1.setTextureSize( 64, 32 );
        Block1.addBox( -8F, -8F, -8F, 16, 16, 16);
        Block1.setRotationPoint( 0F, -8F, -11F );
        Block2 = new ModelRenderer( this, -16, -16 );
        Block2.setTextureSize( 64, 32 );
        Block2.addBox( -24.5F, -21F, -16F, 49, 42, 32);
        Block2.setRotationPoint( 0F, -8F, 0F );
    }

   public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
   {
        Block.rotateAngleX = 0.4512758F;
        Block.rotateAngleY = -1.061418F;
        Block.rotateAngleZ = -0.6629274F;
        Block.renderWithRotation(par7);

        Block1.rotateAngleX = -0.690129F;
        Block1.rotateAngleY = -0.8019104F;
        Block1.rotateAngleZ = -1.68567E-08F;
        Block1.renderWithRotation(par7);

        Block2.rotateAngleX = 0F;
        Block2.rotateAngleY = 0F;
        Block2.rotateAngleZ = -0.6927007F;
        Block2.renderWithRotation(par7);

    }

}

Утилита его преобразовывает в модель Течне (файл с расширением .tcn, внутри .tcn (если открыть архиватором) есть файл "model.xml" - это код модели, которую распознаёт течне)
Короче, после преобразования утилитой код выше в .xml файле стал такой:

Код:
<Techne Version="2.2">
  <Author>ZeuX</Author>
  <DateCreated></DateCreated>
  <Description></Description>
  <Models>
    <Model texture="">
      <BaseClass>ModelBase</BaseClass>
      <Geometry>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,22.0</Position>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block1">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,-11.0</Position>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block2">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>-16,-16</TextureOffset>
          <Offset>-24.5,-21.0,-16.0</Offset>
          <Size>49,42,32</Size>
          <Position>0.0,-8.0,0.0</Position>
      </Geometry>
      <GlScale>1,1,1</GlScale>
      <Name>2</Name>
      <TextureSize>0,0</TextureSize>
    </Model>
  </Models>
  <Name>2</Name>
  <PreviewImage></PreviewImage>
  <ProjectName>2</ProjectName>
  <ProjectType>Minecraft</ProjectType>
</Techne>

А надо, чтобы он был такой:

Код:
<Techne Version="2.2">
  <Author>ZeuX</Author>
  <DateCreated></DateCreated>
  <Description></Description>
  <Models>
    <Model texture="">
      <BaseClass>ModelBase</BaseClass>
      <Geometry>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,22.0</Position>
          <Rotation>25.86,60.81,37.98</Rotation>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    </Shape>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block1">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,-11.0</Position>
          <Rotation>-39.54,45.95,0</Rotation>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    </Shape>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block2">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>-16,-16</TextureOffset>
          <Offset>-24.5,-21.0,-16.0</Offset>
          <Size>49,42,32</Size>
          <Position>0.0,-8.0,0.0</Position>
          <Rotation>0,0,39.69</Rotation>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    </Shape>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      </Geometry>
      <GlScale>1,1,1</GlScale>
      <Name>2</Name>
      <TextureSize>0,0</TextureSize>
    </Model>
  </Models>
  <Name>2</Name>
  <PreviewImage></PreviewImage>
  <ProjectName>2</ProjectName>
  <ProjectType>Minecraft</ProjectType>
</Techne>

Восклицательные знаки я поставил в тех строках, которые утилита не сделала. Без этих строк открытие модели невозможно.
Помогите.
 
471
5
Ну так помогите блин...
 
329
13
*всячески игнорировал эту тему*

Хрен с вами. @Drovosek, предоставь мне:
  1. Пример Java модели, которую нужно преобразовать через прогу;
  2. Результат работы твоей программы (то бишь недоделанный вариант);
  3. Исправленный вручную вариант модели.
Попробую запилировать что-нибудь.
 
471
5
TaoGunner написал(а):
*всячески игнорировал эту тему*

Хрен с вами. @Drovosek, предоставь мне:
  1. Пример Java модели, которую нужно преобразовать через прогу;
  2. Результат работы твоей программы (то бишь недоделанный вариант);
  3. Исправленный вручную вариант модели.

Выкладывал выше эти материалы, но повторюсь:

1. Java код изначальной модели:
Код:
package net.minecraft.src;

public class ModelModel2 extends ModelBase
{
    ModelRenderer Block;
    ModelRenderer Block1;
    ModelRenderer Block2;

    public ModelModel2()
    {
        this( 0.0f );
    }

    public ModelModel2( float par1 )
    {
        Block = new ModelRenderer( this, 0, 0 );
        Block.setTextureSize( 64, 32 );
        Block.addBox( -8F, -8F, -8F, 16, 16, 16);
        Block.setRotationPoint( 0F, -8F, 22F );
        Block1 = new ModelRenderer( this, 0, 0 );
        Block1.setTextureSize( 64, 32 );
        Block1.addBox( -8F, -8F, -8F, 16, 16, 16);
        Block1.setRotationPoint( 0F, -8F, -11F );
        Block2 = new ModelRenderer( this, -16, -16 );
        Block2.setTextureSize( 64, 32 );
        Block2.addBox( -24.5F, -21F, -16F, 49, 42, 32);
        Block2.setRotationPoint( 0F, -8F, 0F );
    }

   public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
   {
        Block.rotateAngleX = 0.4512758F;
        Block.rotateAngleY = -1.061418F;
        Block.rotateAngleZ = -0.6629274F;
        Block.renderWithRotation(par7);

        Block1.rotateAngleX = -0.690129F;
        Block1.rotateAngleY = -0.8019104F;
        Block1.rotateAngleZ = -1.68567E-08F;
        Block1.renderWithRotation(par7);

        Block2.rotateAngleX = 0F;
        Block2.rotateAngleY = 0F;
        Block2.rotateAngleZ = -0.6927007F;
        Block2.renderWithRotation(par7);

    }

}



2. Результат работы утилиты (неправильный xml код):
Код:
<Techne Version="2.2">
  <Author>ZeuX</Author>
  <DateCreated></DateCreated>
  <Description></Description>
  <Models>
    <Model texture="">
      <BaseClass>ModelBase</BaseClass>
      <Geometry>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,22.0</Position>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block1">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,-11.0</Position>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block2">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>-16,-16</TextureOffset>
          <Offset>-24.5,-21.0,-16.0</Offset>
          <Size>49,42,32</Size>
          <Position>0.0,-8.0,0.0</Position>
      </Geometry>
      <GlScale>1,1,1</GlScale>
      <Name>2</Name>
      <TextureSize>0,0</TextureSize>
    </Model>
  </Models>
  <Name>2</Name>
  <PreviewImage></PreviewImage>
  <ProjectName>2</ProjectName>
  <ProjectType>Minecraft</ProjectType>
</Techne>


3. Исправленный вручную код, который должна выводить утилита ([font=Verdana, Helvetica, Arial, sans-serif]Восклицательные знаки я поставил в тех строках, которые утилита не сделала. Без этих строк открытие модели невозможно)[/font]:
Код:
<Techne Version="2.2">
  <Author>ZeuX</Author>
  <DateCreated></DateCreated>
  <Description></Description>
  <Models>
    <Model texture="">
      <BaseClass>ModelBase</BaseClass>
      <Geometry>
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,22.0</Position>
          <Rotation>25.86,60.81,37.98</Rotation>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    </Shape>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block1">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>0,0</TextureOffset>
          <Offset>-8.0,-8.0,-8.0</Offset>
          <Size>16,16,16</Size>
          <Position>0.0,-8.0,-11.0</Position>
          <Rotation>-39.54,45.95,0</Rotation>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    </Shape>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        <Shape type="d9e621f7-957f-4b77-b1ae-20dcd0da7751" name="Block2">
          <Animation>
            <AnimationAngles>0,0,0</AnimationAngles>
            <AnimationDuration>0,0,0</AnimationDuration>
            <AnimationType>0,0,0</AnimationType>
          </Animation>
          <IsDecorative>False</IsDecorative>
          <IsFixed>False</IsFixed>
          <TextureOffset>-16,-16</TextureOffset>
          <Offset>-24.5,-21.0,-16.0</Offset>
          <Size>49,42,32</Size>
          <Position>0.0,-8.0,0.0</Position>
          <Rotation>0,0,39.69</Rotation>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    </Shape>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      </Geometry>
      <GlScale>1,1,1</GlScale>
      <Name>2</Name>
      <TextureSize>0,0</TextureSize>
    </Model>
  </Models>
  <Name>2</Name>
  <PreviewImage></PreviewImage>
  <ProjectName>2</ProjectName>
  <ProjectType>Minecraft</ProjectType>
</Techne>
 
503
3
Код:
if (s.contains("setRotation(") && !s.contains("void")) {
                ss = s.split(",");
                ss[1] = ss[1].replace(" ", "");
                ss[1] = ss[1].replace("F", "");
                float rX2 = Float.parseFloat(ss[1]);
                ss[2] = ss[2].replace(" ", "");
                ss[2] = ss[2].replace("F", "");
                rY1 = Float.parseFloat(ss[2]);
                ss[3] = ss[3].replace(" ", "");
                ss[3] = ss[3].replace("F", "");
                ss[3] = ss[3].replace(")", "");
                ss[3] = ss[3].replace(";", "");
                rZ = Float.parseFloat(ss[3]);
                outputFile.add("          <Rotation>" + Math.toDegrees((double) rX2) + "," + Math.toDegrees((double) rY1) + "," + Math.toDegrees((double) rZ) + "</Rotation>");
                outputFile.add("        </Shape>");
            }
Вообще тут как бы переводится
[merge_posts_bbcode]Добавлено: 27.06.2015 15:59:08[/merge_posts_bbcode]

Модель из Techne отлично туда сюда гоняется
 
Сверху