C3:Unity3D制作智能家居设计软件——绘制户型(二)

上一篇有介绍如何绘制房间墙体和墙体交点,这一篇会介绍绘制户型中的地板和天花板等房间必须的结构。

三、地板

   想绘制地板的话,有两个步骤,一:形成的单个地板区域。二:区分并形成多个地板。

有朋友在博文下留言,问了如何形成闭合区域,想必这位博友也有了清晰的制作思路,没错,形成单个地板区域很容易,只需要知道Unity中形成单个mesh的顶点即可,但是如果想同时形成多个地板区域,而又能正确区分每个区域,这就要麻烦的多了,不过既然有问题,就必定有解决方案。在博主自己写的方法里,正确区分并形成多个地板的核心思路是:通过递归查找封闭多边形顶点索引并记录,然后排除重复项,即可以精准定位每个地板了。详情见下图:

  

         图中有三个地板(封闭空间),每个地板对应一个房间分别为客厅、主卧、餐厅。每个房间由墙体围成,墙体与墙体间的交点即为每个地板的顶点,这点很重要。

          就以主卧来举例,形成主卧的墙体有(1,2)、(2,3)、(3,8)、(8,10)、(10,9)、(9,1),一共六面墙六个顶点形成了这个封闭空间——主卧。所以绘制主卧所在的地板mesh的各个顶点就是1、2、3、8、9、10这六个墙体交点坐标。同理形成客厅的墙体有(8,9)、(9,10)、(10,11)、(11,7)、(7,8),一共五面墙五个顶点形成了这个封闭空间——客厅。绘制客厅所在地板mesh各个顶点就是7、8、9、10、11这五个墙体交点坐标。讲到这大家应该有思路了吧。是不是可以写一个递归算法,让程序自己检测相邻的顶点索引,当顶点索引形成回路的时候,就成功计算出了闭合区域。知道单个封闭空间的形成思路了,全屋地板的检测就不难了。

 

  四、门窗

   下面简单介绍下如何创建门窗,门窗也是房子中必不可少的“物件”,门窗的创建和放置相比较绘制房型简单的多,小伙伴们可以放松放松大脑想看就参考着看一下,不想看就直接跳过。

   门窗这个环节只有一个相对麻烦的地方,就是在创建门窗的时候是需要内嵌到墙体里的,说到内嵌到墙里,当然离不开对墙体做处理:在你劈里啪啦一顿操作将门窗摆放到对应墙体里后,下一步就是要把当前门窗和当前墙体做图形布尔运算了。布尔运算:对墙体Mesh和门窗Mesh做布尔运算,博主的实现方法比较传统,因为已经取得了墙体的mesh和门窗的mesh,这时候只需要计算好门窗mesh的bound,将bound与墙体mesh做“相减”处理即可,具体mesh处理代码虽然多但并不复杂,核心思路就是这样。下面直接看一下创建门窗的过程图:共三步

1、先在绘制户型时放置完各种类型的门窗模型

3、计算bound,然后和墙体mesh做相减布尔运算,将运算结果显示出来

别问我为啥没有2,程序写久了记性不好。

 

绘制户型阶段就到这里,下一阶段开始比较有意思的智能设计,小伙伴们可以消化一下,欢迎小伙伴们留言讨论。

 

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值