沉默的秋水
做过材质模型的应该都知道,在MC的世界里所有模型的大小都不能超过3*3*3大小的空间范围。但是我们在利用blockbench进行建模的时候,有时候(玄学?)会发现模型的一部分明明超过了那个范围,但是却仍然可以正常导出并在游戏里正常显示出来。由此产生两个疑问,这是为什么?如何复现这些操作?经过本人的大量实验,终于找到了操作方法。
步骤非常简单,简单至极,甚至有人应该操作过。
教程

首先,新建一个cube;


接着,旋转一个角度,必须是非0°、90°、180°和270°;


然后,骚操作来了
点击枢轴工具,调整非旋转轴的两个方向的位置,会发现,在3*3*3的空间范围里模型貌似不怎么变化,或者说毫无变化。


别急,让我们继续拖动,将枢轴点拖拽出那个范围,神奇的一幕来了,这个小立方体动了?没错!它动了!!!继续拖拽,这个小立方体竟然超出了那个3*3*3的牢笼。


让我们导出试一试。


没有报错,good~
它自由了吗?不,它还没有完全自由。
>>这个立方体的大小最大只能是3*3*3的大小,
>>它的方向只能是你第一次旋转的方向(有待确定,有点玄学),
>>它的位置只能在一个平面内无限移动。
虽然限制挺多,但是它确实超出了3*3*3的范围,不是吗?这已经可以让我们进行更大的建模了.
视频教程

https://www.bilibili.com/video/BV13k4y1y7Dq/

PS:希望有能力的大佬们,可以仔细研究一下原理,开发出一个插件,实现精确调整位置。


爱心魔王FHC
这算。。。。bug吗,能从json文本分析吗?

沉默的秋水
爱心魔王FHC 发表于 2020-8-29 09:24
这算。。。。bug吗,能从json文本分析吗?

应该不算BUG,看我的教程视频里面的例子是可以正常显示的,具体原理我也不晓得。。。

爱心魔王FHC
本帖最后由 爱心魔王FHC 于 2020-8-29 22:53 编辑

我研究了一下,感觉大致可以这样解释

我写了三个不同的文件


第一个是超出范围的
  1. {
  2.         "credit": "Made with Blockbench",
  3.         "elements": [
  4.                 {
  5.                         "from": [-16, 0, 24],
  6.                         "to": [32, 13, 32],
  7.                         "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, -102]},
  8.                         "color": 2,
  9.                         "faces": {
  10.                         }
  11.                 }
  12.         ]
  13. }
复制代码

第二个是在边界旋转的
  1. {
  2.         "credit": "Made with Blockbench",
  3.         "elements": [
  4.                 {
  5.                         "from": [-16, 0, -16],
  6.                         "to": [32, 13, -8],
  7.                         "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, -8]},
  8.                         "color": 2,
  9.                         "faces": {
  10.                         }
  11.                 }
  12.         ]
  13. }
复制代码

第三个是在边界不旋转的
  1. {
  2.         "credit": "Made with Blockbench",
  3.         "elements": [
  4.                 {
  5.                         "from": [-16, 0, -16],
  6.                         "to": [32, 13, -8],
  7.                         "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -8]},
  8.                         "color": 2,
  9.                         "faces": {
  10.                                 "north": {"uv": [0, 0, 16, 13], "texture": "#missing"},
  11.                                 "east": {"uv": [0, 0, 8, 13], "texture": "#missing"},
  12.                                 "south": {"uv": [0, 0, 16, 13], "texture": "#missing"},
  13.                                 "west": {"uv": [0, 0, 8, 13], "texture": "#missing"},
  14.                                 "up": {"uv": [0, 0, 16, 8], "texture": "#missing"},
  15.                                 "down": {"uv": [0, 0, 16, 8], "texture": "#missing"}
  16.                         }
  17.                 }
  18.         ]
  19. }
复制代码



      ├ from:选择区域的起点坐标,值在-16~32之间。格式为[x, y, z]。(List)*
      ├ to:选择区域的终点坐标,值在-16~32之间。格式为[x, y, z]。(List)*
      ├ rotation:定义一个元素的旋转属性。(Compound)
      │  ├ origin:设置旋转的中心,格式为[x, y, z],默认值为[8, 8, 8]。(List)
引用:https://www.mcbbs.net/thread-491597-1-1.html

注意观察origin,这个MC好像没有限定其数值,所以可以跑很远
可以看到超出范围的值已经是"origin": [8, 8, -102]


然后我把数值改到500,跑了好远,我去试试上限多少


改到5k


我觉得可以利用这个做一些特殊视角才能看到的方块了,解密地图骚操作+1


沉默的秋水
还是有规律可寻的。举个栗子,假如你旋转了45°,然后通过上述办法将其改变位置,然后反向旋转45°,这个模型就会回到那个3*3*3的“笼子里”的未旋转时的位置(可能会有点平移)。

沉默的秋水
而且,如果先调整枢轴点位置,然后旋转使其出现在“笼子”外,导出时就会报错。真的希望可以有大佬可以将这个特性参数化做成插件。比如新添加一个位置移动工具

flash0tt
可惜的是必须有旋转

淡水★琉璃
感谢分享!!

我的好祖宗
这个看起来可以啊

Garrard
牛。。。除此之外不知道说啥了

Xiao2
@chyx
我记得他好像之前研究过的。或许知道原理

chyx
Xiao2 发表于 2020-10-11 10:20
@chyx
我记得他好像之前研究过的。或许知道原理

嗯。我做过。
https://www.bilibili.com/video/BV1JW411P7PN/

我是师博
感谢楼主

第一页 上一页 下一页 最后一页