diff --git a/tests/src/generated/resources/assets/new_model_loader_test/blockstates/obj_block_same_part_names.json b/tests/src/generated/resources/assets/new_model_loader_test/blockstates/obj_block_same_part_names.json new file mode 100644 index 00000000000..b367658bc25 --- /dev/null +++ b/tests/src/generated/resources/assets/new_model_loader_test/blockstates/obj_block_same_part_names.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "new_model_loader_test:block/obj_block_same_part_names", + "y": 90 + }, + "facing=north": { + "model": "new_model_loader_test:block/obj_block_same_part_names" + }, + "facing=south": { + "model": "new_model_loader_test:block/obj_block_same_part_names", + "y": 180 + }, + "facing=west": { + "model": "new_model_loader_test:block/obj_block_same_part_names", + "y": 270 + } + } +} \ No newline at end of file diff --git a/tests/src/generated/resources/assets/new_model_loader_test/models/block/obj_block_same_part_names.json b/tests/src/generated/resources/assets/new_model_loader_test/models/block/obj_block_same_part_names.json new file mode 100644 index 00000000000..2b2fac8b206 --- /dev/null +++ b/tests/src/generated/resources/assets/new_model_loader_test/models/block/obj_block_same_part_names.json @@ -0,0 +1,9 @@ +{ + "flip_v": true, + "loader": "neoforge:obj", + "model": "new_model_loader_test:models/item/sugar_glider_same_part_names.obj", + "textures": { + "particle": "#qr", + "qr": "minecraft:block/oak_planks" + } +} \ No newline at end of file diff --git a/tests/src/main/java/net/neoforged/neoforge/oldtest/client/model/NewModelLoaderTest.java b/tests/src/main/java/net/neoforged/neoforge/oldtest/client/model/NewModelLoaderTest.java index 199266704f0..6ecbd9523e1 100644 --- a/tests/src/main/java/net/neoforged/neoforge/oldtest/client/model/NewModelLoaderTest.java +++ b/tests/src/main/java/net/neoforged/neoforge/oldtest/client/model/NewModelLoaderTest.java @@ -68,25 +68,12 @@ public class NewModelLoaderTest { public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MODID); public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID); - public static DeferredBlock obj_block = BLOCKS.registerBlock("obj_block", props -> new Block(props) { - @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(BlockStateProperties.HORIZONTAL_FACING); - } - - @Nullable - @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { - return defaultBlockState().setValue( - BlockStateProperties.HORIZONTAL_FACING, context.getHorizontalDirection()); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { - return Block.box(2, 2, 2, 14, 14, 14); - } - }, Block.Properties.of().mapColor(MapColor.WOOD).strength(10)); + public static DeferredBlock obj_block = BLOCKS.registerBlock("obj_block", TestBlock::new, Block.Properties.of().mapColor(MapColor.WOOD).strength(10)); + // Same at obj_block except all the parts in the obj model have the same name, + // this is a test for neoforged/NeoForge#1755 that was fixed by neoforged/NeoForge#1759 + public static DeferredBlock obj_block_same_part_names = BLOCKS.registerBlock("obj_block_same_part_names", TestBlock::new, Block.Properties.of().mapColor(MapColor.WOOD).strength(10)); + public static DeferredItem obj_item = ITEMS.registerItem("obj_block", props -> new BlockItem(obj_block.get(), props.useBlockDescriptionPrefix()) { @Override public boolean canEquip(ItemStack stack, EquipmentSlot armorType, LivingEntity entity) { @@ -94,6 +81,8 @@ public boolean canEquip(ItemStack stack, EquipmentSlot armorType, LivingEntity e } }); + public static DeferredItem obj_item_same_part_names = ITEMS.registerItem("obj_block_same_part_names", props -> new BlockItem(obj_block_same_part_names.get(), props)); + public static DeferredItem custom_transforms = ITEMS.registerSimpleItem("custom_transforms"); public static DeferredItem custom_vanilla_loader = ITEMS.registerSimpleItem("custom_vanilla_loader"); @@ -117,6 +106,7 @@ private void addCreative(BuildCreativeModeTabContentsEvent event) { if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) { Arrays.asList( obj_item, + obj_item_same_part_names, custom_transforms, custom_vanilla_loader, custom_loader, @@ -128,6 +118,29 @@ private void addCreative(BuildCreativeModeTabContentsEvent event) { public void modelRegistry(ModelEvent.RegisterLoaders event) { event.register(ResourceLocation.fromNamespaceAndPath(MODID, "custom_loader"), new TestLoader()); } + + static class TestBlock extends Block { + public TestBlock(Properties properties) { + super(properties); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(BlockStateProperties.HORIZONTAL_FACING); + } + + @Nullable + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return defaultBlockState().setValue( + BlockStateProperties.HORIZONTAL_FACING, context.getHorizontalDirection()); + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + return Block.box(2, 2, 2, 14, 14, 14); + } + } static class TestLoader implements UnbakedModelLoader { @Override @@ -203,15 +216,20 @@ public BlockStates(PackOutput output, ExistingFileHelper exFileHelper) { @Override protected void registerStatesAndModels() { + createModelAndBlockState(obj_block, "sugar_glider"); + createModelAndBlockState(obj_block_same_part_names, "sugar_glider_same_part_names"); + } + + private void createModelAndBlockState(DeferredBlock block, String objModel) { BlockModelBuilder model = models() - .getBuilder(NewModelLoaderTest.obj_block.getId().getPath()) + .getBuilder(block.getId().getPath()) .customLoader(ObjModelBuilder::begin) - .modelLocation(ResourceLocation.fromNamespaceAndPath("new_model_loader_test", "models/item/sugar_glider.obj")) + .modelLocation(ResourceLocation.fromNamespaceAndPath("new_model_loader_test", "models/item/" + objModel + ".obj")) .flipV(true) .end() .texture("qr", "minecraft:block/oak_planks") .texture("particle", "#qr"); - getVariantBuilder(NewModelLoaderTest.obj_block.get()) + getVariantBuilder(block.get()) .partialState() .with(BlockStateProperties.HORIZONTAL_FACING, Direction.EAST) .addModels(new ConfiguredModel(model, 0, 90, false)) diff --git a/tests/src/main/resources/assets/new_model_loader_test/models/item/sugar_glider_same_part_names.obj b/tests/src/main/resources/assets/new_model_loader_test/models/item/sugar_glider_same_part_names.obj new file mode 100644 index 00000000000..a75139541ad --- /dev/null +++ b/tests/src/main/resources/assets/new_model_loader_test/models/item/sugar_glider_same_part_names.obj @@ -0,0 +1,579 @@ +# Rhino + +mtllib sugar_glider.mtl +o object +usemtl New material 001 (1) +v 0.7132 0.6084 0.6162 +v 0.7132 0.3283 0.4863 +v 0.8296 0.5819 0.6734 +v 0.8296 0.3018 0.5435 +v 0.8605 0.7225 0.3699 +v 0.8605 0.4425 0.24 +v 0.9769 0.6963 0.4272 +v 0.9769 0.4159 0.2973 +vt 0.7132 0.6084 +vt 0.6162 0.6084 +vt 0.7132 0.3838 +vt 0.7132 0.3283 +vt 0.4863 0.3283 +vt 0.2868 0.5137 +vt 0.8296 0.5819 +vt 0.3266 0.5819 +vt 0.8296 0.3266 +vt 0.8296 0.3018 +vt 0.4565 0.3018 +vt 0.1704 0.4565 +vt 0.1395 0.7225 +vt 0.3699 0.7225 +vt 0.8605 0.6301 +vt 0.1395 0.4425 +vt 0.24 0.4425 +vt 0.1395 0.76 +vt 0.5728 0.6963 +vt 0.0231 0.6963 +vt 0.9769 0.5728 +vt 0.7027 0.4159 +vt 0.0231 0.4159 +vt 0.0231 0.7027 +vn -0.4768 -0.3698 0.7974 +vn -0.879 0.2006 -0.4325 +vn 0 0.9072 0.4207 +vn -0.4768 -0.3698 0.7974 +vn -0.879 0.2006 -0.4325 +vn 0 -0.9072 -0.4207 +vn -0.4768 -0.3698 0.7974 +vn 0.879 -0.2006 0.4325 +vn 0 0.9072 0.4207 +vn -0.4768 -0.3698 0.7974 +vn 0.879 -0.2006 0.4325 +vn 0 -0.9072 -0.4207 +vn 0.4768 0.3698 -0.7974 +vn -0.879 0.2006 -0.4325 +vn 0 0.9072 0.4207 +vn 0.4768 0.3698 -0.7974 +vn -0.879 0.2006 -0.4325 +vn 0 -0.9072 -0.4207 +vn 0.879 -0.2006 0.4325 +vn 0.4768 0.3698 -0.7974 +vn 0 0.9072 0.4207 +vn 0.879 -0.2006 0.4325 +vn 0.4768 0.3698 -0.7974 +vn 0 -0.9072 -0.4207 +f 2/4/4 4/10/10 3/7/7 1/1/1 +f 4/11/11 8/22/22 7/19/19 3/8/8 +f 8/23/23 6/16/16 5/13/13 7/20/20 +f 6/17/17 2/5/5 1/2/2 5/14/14 +f 6/18/18 8/24/24 4/12/12 2/6/6 +f 3/9/9 7/21/21 5/15/15 1/3/3 +o object +usemtl New material 001 +v 0.2059 0 0.7941 +v 0.2059 0.5883 0.7941 +v 0.2059 0 0.2059 +v 0.2059 0.5883 0.2059 +v 0.7941 0 0.7941 +v 0.7941 0.5883 0.7941 +v 0.7941 0 0.2059 +v 0.7941 0.5883 0.2059 +vt 0.2059 0 +vt 0.7941 0 +vt 0.7941 0.2059 +vt 0.2059 0.5883 +vt 0.7941 0.5883 +vt 0.2059 0.2059 +vt 0.7941 0 +vt 0.2059 0 +vt 0.7941 0.7941 +vt 0.7941 0.5883 +vt 0.2059 0.5883 +vt 0.2059 0.7941 +vt 0.7941 0 +vt 0.2059 0 +vt 0.2059 0.2059 +vt 0.7941 0.5883 +vt 0.2059 0.5883 +vt 0.7941 0.2059 +vt 0.7941 0 +vt 0.2059 0 +vt 0.2059 0.7941 +vt 0.7941 0.5883 +vt 0.2059 0.5883 +vt 0.7941 0.7941 +vn 0 0 1 +vn -1 0 0 +vn 0 -1 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 0 -1 +vn -1 0 0 +vn 0 -1 0 +vn 0 0 -1 +vn -1 0 0 +vn 0 1 0 +vn 0 0 1 +vn 1 0 0 +vn 0 -1 0 +vn 0 0 1 +vn 1 0 0 +vn 0 1 0 +vn 1 0 0 +vn 0 0 -1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 -1 +vn 0 1 0 +f 9/25/25 13/37/37 14/40/40 10/28/28 +f 13/38/38 15/43/43 16/46/46 14/41/41 +f 15/44/44 11/31/31 12/34/34 16/47/47 +f 11/32/32 9/26/26 10/29/29 12/35/35 +f 11/33/33 15/45/45 13/39/39 9/27/27 +f 14/42/42 16/48/48 12/36/36 10/30/30 +o object +usemtl Default +v 0.5294 0.2353 0.8235 +v 0.5294 0.4706 0.8235 +v 0.5294 0.2353 0.7941 +v 0.5294 0.4706 0.7941 +v 0.7647 0.2353 0.8235 +v 0.7647 0.4706 0.8235 +v 0.7647 0.2353 0.7941 +v 0.7647 0.4706 0.7941 +vt 0.4706 0.1765 +vt 0.8235 0.2353 +vt 0.5294 0.2353 +vt 0.5294 0.1765 +vt 0.8235 0.4706 +vt 0.5294 0.4706 +vt 0.4706 0.2059 +vt 0.7941 0.2353 +vt 0.4706 0.2353 +vt 0.5294 0.2059 +vt 0.7941 0.4706 +vt 0.4706 0.4706 +vt 0.2353 0.1765 +vt 0.1765 0.2353 +vt 0.7647 0.2353 +vt 0.1765 0.4706 +vt 0.7647 0.1765 +vt 0.7647 0.4706 +vt 0.2353 0.2059 +vt 0.2059 0.2353 +vt 0.2353 0.2353 +vt 0.2059 0.4706 +vt 0.7647 0.2059 +vt 0.2353 0.4706 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 -1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 -1 +f 19/55/55 23/67/67 21/61/61 17/49/49 +f 23/68/68 24/70/70 22/64/64 21/62/62 +f 24/71/71 20/58/58 18/52/52 22/65/65 +f 20/59/59 19/56/56 17/50/50 18/53/53 +f 20/60/60 24/72/72 23/69/69 19/57/57 +f 21/63/63 22/66/66 18/54/54 17/51/51 +o object +usemtl Default +v 0.2353 0.2353 0.8235 +v 0.2353 0.4706 0.8235 +v 0.2353 0.2353 0.7941 +v 0.2353 0.4706 0.7941 +v 0.4706 0.2353 0.8235 +v 0.4706 0.4706 0.8235 +v 0.4706 0.2353 0.7941 +v 0.4706 0.4706 0.7941 +vt 0.7647 0.1765 +vt 0.8235 0.2353 +vt 0.2353 0.2353 +vt 0.2353 0.1765 +vt 0.8235 0.4706 +vt 0.2353 0.4706 +vt 0.7647 0.2059 +vt 0.7941 0.2353 +vt 0.7647 0.2353 +vt 0.2353 0.2059 +vt 0.7941 0.4706 +vt 0.7647 0.4706 +vt 0.5294 0.1765 +vt 0.1765 0.2353 +vt 0.4706 0.2353 +vt 0.1765 0.4706 +vt 0.4706 0.1765 +vt 0.4706 0.4706 +vt 0.5294 0.2059 +vt 0.2059 0.2353 +vt 0.5294 0.2353 +vt 0.2059 0.4706 +vt 0.4706 0.2059 +vt 0.5294 0.4706 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 -1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 -1 +f 27/79/79 31/91/91 29/85/85 25/73/73 +f 31/92/92 32/94/94 30/88/88 29/86/86 +f 32/95/95 28/82/82 26/76/76 30/89/89 +f 28/83/83 27/80/80 25/74/74 26/77/77 +f 28/84/84 32/96/96 31/93/93 27/81/81 +f 29/87/87 30/90/90 26/78/78 25/75/75 +o object +usemtl New material 001 +v 0.4118 0 0.8824 +v 0.4118 0.1765 0.8824 +v 0.4118 0 0.7353 +v 0.4118 0.1765 0.7353 +v 0.5882 0 0.8824 +v 0.5882 0.1765 0.8824 +v 0.5882 0 0.7353 +v 0.5882 0.1765 0.7353 +vt 0.4118 0 +vt 0.8824 0 +vt 0.5882 0.1176 +vt 0.4118 0.1765 +vt 0.8824 0.1765 +vt 0.4118 0.1176 +vt 0.5882 0 +vt 0.7353 0 +vt 0.5882 0.2647 +vt 0.5882 0.1765 +vt 0.7353 0.1765 +vt 0.4118 0.2647 +vt 0.5882 0 +vt 0.1176 0 +vt 0.4118 0.1176 +vt 0.5882 0.1765 +vt 0.1176 0.1765 +vt 0.5882 0.1176 +vt 0.2647 0 +vt 0.4118 0 +vt 0.4118 0.2647 +vt 0.2647 0.1765 +vt 0.4118 0.1765 +vt 0.5882 0.2647 +vn 0 0 1 +vn -1 0 0 +vn 0 -1 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 0 -1 +vn -1 0 0 +vn 0 -1 0 +vn 0 0 -1 +vn -1 0 0 +vn 0 1 0 +vn 0 0 1 +vn 1 0 0 +vn 0 -1 0 +vn 0 0 1 +vn 1 0 0 +vn 0 1 0 +vn 1 0 0 +vn 0 0 -1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 -1 +vn 0 1 0 +f 33/97/97 37/109/109 38/112/112 34/100/100 +f 37/110/110 39/115/115 40/118/118 38/113/113 +f 39/116/116 35/103/103 36/106/106 40/119/119 +f 35/104/104 33/98/98 34/101/101 36/107/107 +f 35/105/105 39/117/117 37/111/111 33/99/99 +f 38/114/114 40/120/120 36/108/108 34/102/102 +o object +usemtl New material 002 +v 0.4706 0.1176 0.9118 +v 0.4706 0.1765 0.9118 +v 0.4706 0.1176 0.8824 +v 0.4706 0.1765 0.8824 +v 0.5294 0.1176 0.9118 +v 0.5294 0.1765 0.9118 +v 0.5294 0.1176 0.8824 +v 0.5294 0.1765 0.8824 +vt 0.5294 0.0882 +vt 0.9118 0.1176 +vt 0.4706 0.1176 +vt 0.4706 0.0882 +vt 0.9118 0.1765 +vt 0.4706 0.1765 +vt 0.5294 0.1176 +vt 0.8824 0.1176 +vt 0.5294 0.1176 +vt 0.4706 0.1176 +vt 0.8824 0.1765 +vt 0.5294 0.1765 +vt 0.4706 0.0882 +vt 0.0882 0.1176 +vt 0.5294 0.1176 +vt 0.0882 0.1765 +vt 0.5294 0.0882 +vt 0.5294 0.1765 +vt 0.4706 0.1176 +vt 0.1176 0.1176 +vt 0.4706 0.1176 +vt 0.1176 0.1765 +vt 0.5294 0.1176 +vt 0.4706 0.1765 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 -1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 -1 +f 43/127/127 47/139/139 45/133/133 41/121/121 +f 47/140/140 48/142/142 46/136/136 45/134/134 +f 48/143/143 44/130/130 42/124/124 46/137/137 +f 44/131/131 43/128/128 41/122/122 42/125/125 +f 44/132/132 48/144/144 47/141/141 43/129/129 +f 45/135/135 46/138/138 42/126/126 41/123/123 +o object +usemtl New material 003 +v 0.5882 0.2736 0.8347 +v 0.5882 0.3912 0.8347 +v 0.5882 0.2736 0.8053 +v 0.5882 0.3912 0.8053 +v 0.7059 0.2736 0.8347 +v 0.7059 0.3912 0.8347 +v 0.7059 0.2736 0.8053 +v 0.7059 0.3912 0.8053 +vt 0.4118 0.1653 +vt 0.8347 0.2736 +vt 0.5882 0.2736 +vt 0.5882 0.1653 +vt 0.8347 0.3912 +vt 0.5882 0.3912 +vt 0.4118 0.1947 +vt 0.8053 0.2736 +vt 0.4118 0.2736 +vt 0.5882 0.1947 +vt 0.8053 0.3912 +vt 0.4118 0.3912 +vt 0.2941 0.1653 +vt 0.1653 0.2736 +vt 0.7059 0.2736 +vt 0.1653 0.3912 +vt 0.7059 0.1653 +vt 0.7059 0.3912 +vt 0.2941 0.1947 +vt 0.1947 0.2736 +vt 0.2941 0.2736 +vt 0.1947 0.3912 +vt 0.7059 0.1947 +vt 0.2941 0.3912 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 -1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 -1 +f 51/151/151 55/163/163 53/157/157 49/145/145 +f 55/164/164 56/166/166 54/160/160 53/158/158 +f 56/167/167 52/154/154 50/148/148 54/161/161 +f 52/155/155 51/152/152 49/146/146 50/149/149 +f 52/156/156 56/168/168 55/165/165 51/153/153 +f 53/159/159 54/162/162 50/150/150 49/147/147 +o object +usemtl New material 003 +v 0.2941 0.2736 0.8347 +v 0.2941 0.3912 0.8347 +v 0.2941 0.2736 0.8053 +v 0.2941 0.3912 0.8053 +v 0.4118 0.2736 0.8347 +v 0.4118 0.3912 0.8347 +v 0.4118 0.2736 0.8053 +v 0.4118 0.3912 0.8053 +vt 0.7059 0.1653 +vt 0.8347 0.2736 +vt 0.2941 0.2736 +vt 0.2941 0.1653 +vt 0.8347 0.3912 +vt 0.2941 0.3912 +vt 0.7059 0.1947 +vt 0.8053 0.2736 +vt 0.7059 0.2736 +vt 0.2941 0.1947 +vt 0.8053 0.3912 +vt 0.7059 0.3912 +vt 0.5882 0.1653 +vt 0.1653 0.2736 +vt 0.4118 0.2736 +vt 0.1653 0.3912 +vt 0.4118 0.1653 +vt 0.4118 0.3912 +vt 0.5882 0.1947 +vt 0.1947 0.2736 +vt 0.5882 0.2736 +vt 0.1947 0.3912 +vt 0.4118 0.1947 +vt 0.5882 0.3912 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 1 +vn 0 -1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 1 0 +vn -1 0 0 +vn 0 0 -1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 1 +vn 0 -1 0 +vn 1 0 0 +vn 0 0 -1 +vn 1 0 0 +vn 0 1 0 +vn 0 0 -1 +f 59/175/175 63/187/187 61/181/181 57/169/169 +f 63/188/188 64/190/190 62/184/184 61/182/182 +f 64/191/191 60/178/178 58/172/172 62/185/185 +f 60/179/179 59/176/176 57/170/170 58/173/173 +f 60/180/180 64/192/192 63/189/189 59/177/177 +f 61/183/183 62/186/186 58/174/174 57/171/171 +o object +usemtl New material 001 (1) +v 0.02313 0.6963 0.4272 +v 0.02313 0.4159 0.2973 +v 0.1395 0.7225 0.3699 +v 0.1395 0.4425 0.24 +v 0.1704 0.5819 0.6734 +v 0.1704 0.3018 0.5435 +v 0.2868 0.6084 0.6162 +v 0.2868 0.3283 0.4863 +vt 0.9769 0.6963 +vt 0.4272 0.6963 +vt 0.02313 0.5728 +vt 0.9769 0.4159 +vt 0.2973 0.4159 +vt 0.9769 0.7027 +vt 0.6301 0.7225 +vt 0.8605 0.7225 +vt 0.1395 0.6301 +vt 0.76 0.4425 +vt 0.8605 0.4425 +vt 0.8605 0.76 +vt 0.6734 0.5819 +vt 0.1704 0.5819 +vt 0.1704 0.3266 +vt 0.5435 0.3018 +vt 0.1704 0.3018 +vt 0.8296 0.4565 +vt 0.3838 0.6084 +vt 0.2868 0.6084 +vt 0.2868 0.3838 +vt 0.5137 0.3283 +vt 0.2868 0.3283 +vt 0.7132 0.5137 +vn -0.4768 0.3698 -0.7974 +vn -0.879 -0.2006 0.4325 +vn 0 0.9072 0.4207 +vn -0.4768 0.3698 -0.7974 +vn -0.879 -0.2006 0.4325 +vn 0 -0.9072 -0.4207 +vn 0.879 0.2006 -0.4325 +vn -0.4768 0.3698 -0.7974 +vn 0 0.9072 0.4207 +vn 0.879 0.2006 -0.4325 +vn -0.4768 0.3698 -0.7974 +vn 0 -0.9072 -0.4207 +vn -0.879 -0.2006 0.4325 +vn 0.4768 -0.3698 0.7974 +vn 0 0.9072 0.4207 +vn -0.879 -0.2006 0.4325 +vn 0.4768 -0.3698 0.7974 +vn 0 -0.9072 -0.4207 +vn 0.879 0.2006 -0.4325 +vn 0.4768 -0.3698 0.7974 +vn 0 0.9072 0.4207 +vn 0.879 0.2006 -0.4325 +vn 0.4768 -0.3698 0.7974 +vn 0 -0.9072 -0.4207 +f 72/214/214 68/202/202 67/199/199 71/211/211 +f 68/203/203 66/196/196 65/193/193 67/200/200 +f 66/197/197 70/208/208 69/205/205 65/194/194 +f 70/209/209 72/215/215 71/212/212 69/206/206 +f 66/198/198 68/204/204 72/216/216 70/210/210 +f 71/213/213 67/201/201 65/195/195 69/207/207