前言

  正在摸索学习Houdini中,在制作一个程序化门洞的案例时(思路是将Box1作为墙体,将Box2作为门/洞,两个几何体相减,对生成的新几何体进行DetailMesh的平铺),遇到了将Box2作为门时一切正常,但当Box2作为洞时,使用Labs Detail Mesh节点时会产生模型破碎的情况。如图1:

图1:Box2作为门(左) Box作为洞(右)

  研究了半天把问题解决了,因为不是学建模出身,研究过程也学到许多新的基础知识,故在此把解决方法和研究过程都记录一下。

1.边的分析

  问题产生了肯定是有原因的,首先我确定了造成破碎的直接原因是Labs Detail Mesh节点,然后寻找Box2作为门和洞两种情况的不同之处,从制作源头开始寻找,很快我发现,在进行boolean运算时,洞结构会产生门结构明显没有的两条接缝,如图2:

图2:洞结构的两条接缝/结构线(右)

  第一个想法自然是把它们弄掉后看看效果,但是发现好像找不到什么好方法删掉它们。然后经过大佬科普:这是建模软件在进行boolean计算时一定会产生的结构线,一定想要删掉的话可以vdb重拓扑,但模型大概率会出问题。

拓扑:建模中的拓扑可以理解为模型的建模布线。重拓扑即用某种方式重新对模型布线。
好的拓扑结构面片数量适量、大小较为平均、面片大部分为四边形,尽量避免超过四条边的多边形和超过5条边汇集的极点,这样有益于模型展uv、做平滑、动画产生形变和导入引擎产生三角面时减少歧义。

2.DetailMesh节点分析

  好吧,似乎是底层原因,从头找问题的方法有点走不通了,再从问题的直接原因Labs Detail Mesh节点逆向寻找一下。
  Houdini的Labs节点相当于是一个subnet或者HDA,通过工具栏->Assets->Unlock Assets解锁后,即可正常查看Labs节点内部流程。
  在Labs Detail Mesh节点中,会先对输入1(模板模型)进行细分预处理,对输入2(细节网格面)进行初始化,再通过foreach循环将模板模型按照其uv裁剪成“模型uv面”,并使用Ray节点将“模型uv面”,投影至由细节网格面平铺而成的更大的细节网格面上,进行了一次模型层面上的uv映射。再进行一系列的重组、平滑、清理后,得到了最终的细节网格模型。

图3:模型层面上的uv映射

  而模型破碎的问题就出在最开始对模型进行细分这一步上,Labs Detail Mesh节点采用divide节点切分,切分方式为勾选Bricker polygons取消Convex polygons,这会造成图4效果,模型的部分面产生翻折,自然后续的处理也不会正确。

图4:Labs Detail Mesh节点内的切分

3.解决方法

  采取的解决方法是在使用Labs Detail Mesh节点前先做一次模型的切分,使用divide节点选用Convex polygons(Bricker polygons可选可不选),注意切分后模型的uv对应关系不出错,即可解决。

图5:在Labs Detail Mesh节点前切分

图6:问题解决,洞结构也不出错啦

结语

  还是Houdini菜鸟,本篇博客仅为个人观点的记录和分享,若有错误希望各位大佬指教。
  加油呀达达,继续在程序化的道路上摔跤吧(๑•̀ㅂ•́)و✧

【Houdini】洞结构DetailMesh平铺造成的模型破碎问题的研究和解决相关推荐

  1. 树形结构转平铺结构,平铺结构转树形结构

    先新建一个数组 const arr = [{pid: null,id: 1,name: '北京'},{pid: 1,id: 11,name: '朝阳'},{pid: 11,id: 111,name: ...

  2. 每天一道LeetCode-----将二叉树原地平铺成链式结构

    Flatten Binary Tree to Linked List 原题链接Flatten Binary Tree to Linked List 给定一个二叉树,将其原地平铺成链式结构(按先序遍历的 ...

  3. Java 平铺列表转为树形结构

    在业务中往往有一些数据是有层级结构的,比如数据表中原始数据如下形式 id name parentId 1 1 null 2 1-1 1 3 1-1-1 2 4 1-1 1 想要将平铺的数据变成有层次的 ...

  4. 平铺的树形结构--------树形的应用

    1.平铺的数据 0: {id: "604e115c7bfcfa45d019d3e9", pid: "-1", name: "传智教育", c ...

  5. iOS开发那些事-平铺导航–基于分屏导航及案例实现

    平铺导航模式是非常重要的导航模式.一般用于简单的扁平化信息浏览或任务.扁平化信息是指这些信息之间没有从属的层次关系,如中国的城市中北京.上 海和哈尔滨之间是扁平化信息,而哈尔滨市与黑龙江省之间的关系是 ...

  6. 陶哲轩等人用编程方法,推翻了60年几何难题「周期性平铺猜想」

    编辑 | 机器之心 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 数学家们曾预测,如果对形状如何平铺空间施加足 ...

  7. 背景平铺两栏自适应(占满剩余高度)fastclick、IScroll双飞翼布局

    文章目录 背景平铺 两栏自适应(占满剩余高度) 需求 实现 fastclick插件的使用 IScroll插件的使用(实现区域滚动效果) 条件 双飞翼布局(两边固定宽度,中间自适应) 条件 实现 背景平 ...

  8. 游戏建模 | 适用于设计师制作平铺材质(Zbrush砖石平铺)

    在我们次世代场景案例制作中,会大量使用到四方连续的平铺贴图.在传统方法中,可以使用照片在PS中位移制作得出.或者是其他软件如B2M等自动制作平铺效果.这种方法有一定的缺陷首先照片素材要求高,找不到合适 ...

  9. 如何选择适合的木饰面电视背景墙风格——做柜子好还是平铺好?

    引言: 电视背景墙是客厅的重要组成部分,它不仅可以提升整个空间的美感,还可以为我们提供储物空间.现在市面上有两种主流的木饰面电视背景墙风格:做柜子和平铺.那么,究竟哪种风格更适合你的家呢?本文将为您详 ...

最新文章

  1. 主分支和'起源/主人'有分歧,如何'疏远'分支'?
  2. framework 2.0 新增的一个string.split()方法重载
  3. 网络安全 攻击类型_网络攻击的类型| 网络安全
  4. Oracle中通过存储过程,Function,触发器实现解析时间类型的字段并插入的对应的数据表中...
  5. web开发时浏览器兼容性问题汇总
  6. 微型计算机的输入 输出设备PPT,(微型计算机系统模型).ppt
  7. Java设计模式之观察者模式(发布-订阅模式)
  8. mysql 全文搜索怎么设置_mysql 全文搜索 技巧
  9. 若计算机系统有120个终端,概率论答案 - 李贤平版 - 第五章
  10. Linux系统搭建房卡游戏教程,2020年H5电玩房卡游戏源码合集运营级:超强后台控制+部署教程文档...
  11. macbook系统占用硬盘大_Mac系统文件过大——如何清理Mac系统空间?
  12. java星星闪烁代码_css3实现星星闪烁效果
  13. thrift编写规则,及常见问题
  14. 《Redis开发与运维》阅读笔记:键管理之单个键管理
  15. JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)
  16. 2015年1月工作记录和阅读记录
  17. CoreData 的使用
  18. 一般树与二叉树的相互转换
  19. hdmi接口线_太厉害了!HDMI线还能这么用,以前不知道真是浪费了
  20. 海康综合安防管理平台V1.5.100 用户添加和监控点添加。

热门文章

  1. 腾讯云sms短信验证码
  2. 千锋教育python2104期总结day11
  3. 第3单元 mvp架构,dagger2,butterknife的使用
  4. SDN 与 Mininet 概述
  5. 增益和增益率,计算代码
  6. react之间的组件传值
  7. 中国软件的希望与失望(转)
  8. 获取手机屏幕大小 DisplayMetrics
  9. 孝经白话:三才章第七
  10. 《阿甘正传》--简单中的美好