Voxel House(体素屋)
分解体素屋演示 作者:Oskar Stålberg
介绍
我的项目通常围绕着我想探索的一些中心思想展开。在这里,这个中心思 想是模块化图块集的一种特定的内容驱动方法,我已经想到了一段时间。 此项目可以在 Maya 中创建为 Python 脚本,也可以在 Houdini 中创建为节点图。但是,由于我不希望我的最终演示材料是以灰盒 Maya 场景为背景的沉闷叙述的 youtube 剪辑,因此我创建了一个交互式 Web 演示。 作为一名技术艺术家,我的技能范围至关重要;我不是一个大师级的艺术家,也不是一个合格的程序员,但我两者都有一部分。我最擅长艺术与科技的交汇处;程序和工艺。 网络演示是展示这些技能的完美媒介。
弄清楚瓷砖
核心概念是这样的:瓷砖是放置在方块之间的角落,而不是方块的中心。 图块由它们周围的方块定义:与角落中一个方块相邻的方块的方块将是 1,0,0,0,0,0,0;表示直墙的瓷砖将是 1,1,1,1,0,0,0,0。
由于每个角被 8 个可能的方块包围,每个方块可以是存在或不存在的 2 种可能状态,因此可能的方块数量为 2^8= 256。这比我想要建模的块要多得多,所以我写了一个脚本来弄清楚这些图块中哪些是真正独特的,哪些图块只是其他图块的旋转。 脚本告诉我,我必须对 67 个独特的图块进行建模 - 这个数字要容易得多。
我也可以排除其他瓷砖的翻转版本,这将使数字进一步下降。但是,我决定保留这些,以便我可以制作一些不对称的平铺功能。 您在建筑物凹角处看到的排水管就是一个例子。
Maya 中的布尔设置
作为技术艺术家,我经常花更多的时间在工作流程上,而不是花在实际工作上。即使考虑到旋转排列,这个项目仍然涉及大量的 3D 网格需要手动创建和跟踪。 该项目的模块化特性也使得在 Maya 之外的适当上下文中持续查看和评估模型非常重要。导出过程必须快速简便,我决定编写一个小的 python 脚本来帮助我。 首先,脚本将我所有的网格合并为一个整体。其次,每个图块的边界框继续使用 Maya 的布尔运算剪切出此合并网格的特定切片。 所有切口块都继承其边界框中的名称和变换,并一起导出为 fbx。
这不仅使导出过程成为一键式解决方案,还意味着我不必保持 Maya 场景的整洁。网格的名称、它们的父级或它们是否正确合并并不重要。 我调整了我的 Maya 脚本,以允许相同图块类型的多个变体。然后,我的 Unity 脚本从该变体池中随机选择它存在的地方。在下图中,您可以看到某些边界框比其他边界框大。 这些适用于顶点超出其分配体积的图块。