Изменение размера модели

Версия Minecraft
1.12.2
124
1
8
Всем привет.
Вобщем, вгрузил obj блок с помощью форджевского загрузчика, но модель слишком большая, и мне нужно её уменьшить. Смотрел другие темы, писали что это надо делать в blockstate, но как именно - не написали. Искал тут:
Ответа не нашел. Так как же мне все таки это сделать?
P.s и не надо писать, чтобы я уменьшил саму модель в 3д редакторе, если бы была бы такая возможность, я бы эту тему не создавал.
 
124
1
8
а можно по конкретнее?

Java:
{
  "forge_marker": 1,
  "defaults": {
    "custom": { "flip-v": true },
    "model": "modid:block.obj"
  },
  "variants": {
    "normal": [{}],
    "inventory": [
      {
        "transform": {
          "thirdperson_lefthand": {
            "rotation": [ { "x": -90 }, { "y": 0 }, { "z": 0 } ],
            "translation": [ 0, -0.1, 0.1 ],
            "scale": 1.00
          },
          "thirdperson_righthand": {
            "rotation": [ { "x": -90 }, { "y": 0 }, { "z": 0 } ],
            "translation": [ 0, -0.1, 0.1 ],
            "scale": 1.00
          },
          "gui": {
            "rotation": [ { "x": 0 }, { "y": 0 }, { "z": 0 } ],
            "translation": [ 0.2, -0.2, 0 ],
            "scale": 0.40
          },
          "firstperson_righthand": {
            "rotation": [ { "x": -90 }, { "y": 0 }, { "z": 0 } ],
            "translation": [ 0, 0, 0 ],
            "scale": 0.40
          },
          "firstperson_lefthand": {
            "rotation": [ { "x": -90 }, { "y": 0 }, { "z": 0 } ],
            "translation": [ 0, 0, 0 ],
            "scale": 0.50
          },
          "ground": {
            "rotation": [ { "x": -90 }, { "y": 0 }, { "z": 0 } ],
            "scale": 0.50
          }
        }
      }
    ]
  }
}

Куда мне здесь пихать "scale":?
 
7,099
324
1,509
1596978028293.png

1596978116040.png
 
7,099
324
1,509
Действительно. Через блокстейт, вроде, можно только вращения добавить. Попробуй так
JSON:
{
  "forge_marker": 1,
  "defaults": {
    "custom": { "flip-v": true },
    "model": "modid:block.obj"
  },
  "variants": {
    "normal": [{
        "transform": {
             "ground": {
                "scale": 0.5
             }
        }
    }],
    "inventory": [
      {
Если не поможет - скаллируй координаты вершин в самой моделе через редактор
 
124
1
8
Крч, я спрашивал у иностранцев, сказали, что единственный вариант в моем случае - уменьшать саму модель через редактор, с помощью блокстейта это сделать нельзя. Но я уже выше писал, что возможности нету, т.к. моделей очень много и они не мои, да и пользоваться блендером не моя стихия. Хотя можно опять же, подключить кастомный рендер к блоку, но я хз как это сделать..
 

GoogleTan

Картошка :3
1,354
43
310
да и пользоваться блендером не моя стихия. Хотя можно опять же, подключить кастомный рендер к блоку, но я хз как это сделать..
1. удали куб из центра
2. File -> Import -> Выбери тип модели
3. потом выдели ее всю
4. нажми несколько раз пробел пока вместо стрелок не будут квадратики.
5. зажми мышку на одном из них и тащи в нужную сторону для изменения размера.
6. после всех работ нажми File -> Export -> нужный тебе тип модели.
 
7,099
324
1,509
моделей очень много и они не мои, да и пользоваться блендером не моя стихия
Я тут подумал... Модели ведь все равно преобразовываются в IBakedModel, можно их как-то обрабатывать на этой стадии.
Например, во время ModelBakeEvent взять модель из реестра, отмасштабировать координаты всех квадов и запихнуть модель с измененными квадами назад в реестр.
Можно юзать Endothermic
Будет че-то вроде того:
Java:
IBakedModel originalModel = event.getModelRegistry().getObject(<model resource location>);
List<BakedQuad> originalQuads = originalModel.getQuads(...);

List<BakedQuad> scaledQuads = originalQuads.stream()
    .map(quad->
        LazyUnpackedQuad.apply(quad).scale(0.5).toBakedQuad()
    ).collect(toList());

IBakedModel scaledModel = new BakedModelDelegate(originalModel){
    @Override
    public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) {
        return scaledQuads;
    }
};

event.getModelRegistry().putObject(<model resource location>, scaledModel);
Остается понять, какой <model resource location> генерирует загрузчик obj-моделей для каждой модели. Для этого почитай сорцы загрузчика, поэкспериментируй.

BakedModelDelegate - модель, которая делегирует свои методы оригинальной модели

И таким образом автоматически обработаем все модели
 
178
4
42
@hohserg1 боже, чел, ну там же вроде все логично, те параметры отвечали за отображение в руке, хотя в данном случае, мне не это нужно :m_faceplam:
А какое отображение тебе нужно? Из блокстейта можно настроить любое...
Не понимаю, в чём проблема, вроде выше примеры есть, как скейл добавить внутриигровой. Ну на держи ещё пример...

Модель блока:
{
  "forge_marker": 1,
  "defaults": {
    "custom": { "flip-v": true },
    "model": "pas:antimatter_obsidian.obj",
    "transform": {
      "rotation": [ { "x": 0 }, { "y": 0 }, { "z": 0 } ],
      "translation": [ 0.25, 0.25, 0.25 ],
      "scale": 0.5    #скейл по умолчанию
    }
  },
  "variants": {
    "normal": [{}],
    "inventory":
    [
      {
        "transform": {
          "thirdperson_lefthand": {
            "rotation": [ { "x": 75 }, { "y": 45 }, { "z": 0 } ],
            "translation": [ 0, 0.08, 0.1 ],
            "scale": 0.18 # и тут скейл
          },
          "thirdperson_righthand": {
            "rotation": [ { "x": 75 }, { "y": 45 }, { "z": 0 } ],
            "translation": [ 0.12, 0.2, 0.05 ],
            "scale": 0.18 # и тут тоже скейл
          },
          "gui": {
            "rotation": [ { "x": 30 }, { "y": -45 }, { "z": 0 } ],
            "translation": [ 0, 0, 0 ],
            "scale": 0.3 # и тут
          },
          "firstperson_righthand": {
            "rotation": [ { "x": 0 }, { "y": 45 }, { "z": 0 } ],
            "translation": [ 0.5, -0.2, -0.50 ],
            "scale": 0.3 # тут вроде тоже
          },
          "firstperson_lefthand": {
            "rotation": [ { "x": 0 }, { "y": 45 }, { "z": 0 } ],
            "translation": [ 0.4, -0.2, -0.30 ],
            "scale": 0.3 # в левой руке
          },
          "ground": {
            "rotation": [ { "x": 0 }, { "y": 90 }, { "z": 0 } ],
            "translation": [ 0.15, 0.1, -0.15 ],
            "scale": 0.3 # а этот вообще на земле
          }
        }
      }
    ]
  }
}
 
Последнее редактирование:
Сверху