1 / 32

Interactive Architectural Modeling with Procedural Extrusions

许鹏飞. Interactive Architectural Modeling with Procedural Extrusions. 基于过程式挤出的交互式建筑建模. 简介. 目的: 针对复杂建筑曲面的交互式的、基于过程的建模系统 原因: 多级编辑,之前的编辑会根据随后的编辑做相应调整 有利于大型场景建模 交互与过程结合,易与用户使用. 简介. 交互方式与基本定义 Plan : 建筑平面图 每一条边有对应的 Profile 不同高度会发生变化 Profile : 轮廓线 单调上升,允许水平. 简介. 交互方式与基本定义 Overhangs : 屋檐

alize
Download Presentation

Interactive Architectural Modeling with Procedural Extrusions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 许鹏飞 Interactive Architectural Modeling with Procedural Extrusions 基于过程式挤出的交互式建筑建模

  2. 简介 • 目的: • 针对复杂建筑曲面的交互式的、基于过程的建模系统 • 原因: • 多级编辑,之前的编辑会根据随后的编辑做相应调整 • 有利于大型场景建模 • 交互与过程结合,易与用户使用

  3. 简介 • 交互方式与基本定义 • Plan:建筑平面图 • 每一条边有对应的Profile • 不同高度会发生变化 • Profile:轮廓线 • 单调上升,允许水平

  4. 简介 • 交互方式与基本定义 • Overhangs:屋檐 • 构建多条防止破坏profile的单调性 • Anchors:锚点 • Relative:在active plan上,到达指定高度则定位锚点 • Absolute: 在初始平面上,垂直水平面做射线与指定高度的平面的交点 • 插入边改变active plan • 插入模型,丰富模型细节

  5. 简介 • 交互方式与基本定义 • Plan Edits :在特定高度修改plan • Forced steps:插入固定的边 • Natural steps::提供一系列可插入的形状,自适应的 • Modeling Larger Environments:大规模建模 • Footprint根据环境赋予不同建筑类型 • 自动对建筑plan的边赋标签 • length ∈ {short,medium,long} • orientation ∈ {street,side,back} • 根据标签赋上对应类型的profile

  6. 基本思路 • 根据用户输入定义初始plan,profile,anchor等 • 维护一个从地基逐渐上升的sweep plane,其上的plan称为active plan • Active plan在上升过程根据每条边对应的profile进行挤出,并在发生profile改变方向,锚点插入,平面相交等事件发生时更新active plan。 • 最终得到所有事件发生时的plan,也就得到了表达整栋建筑模型的所有点

  7. 具体实现 • 定义 • Plan:将水平面分割为内外个区域,逆时针有向边包围图形内部,顺时针表示洞 • 第j个多变形有nj个角点,第i个点为 • 与下一点构成边 • 每条边对应一个方向平面 ,由角度θ限定

  8. 具体实现 • 定义 • Profile:用来控制边对应的方向平面的角度 • 有m个点表示为ti • ti与ti+1的连线和垂线沿顺时针方向的角度定义为θ • 且最终角大于0

  9. 具体实现 • 概要 • 输入: • Plan • Profile • Anchor • 输出: • Architectural shell(3d mesh)

  10. 具体实现 • 主循环

  11. 具体实现 • Plan data structure • 角点链表 • 有指向前后点的指针,和前后边的指针

  12. 具体实现 • 事件 • Generalized Intersection Event:通用相交事件 • Edge Direction Events:边方向事件 • Profile Offset Events: 偏移事件 • Anchor Events: 锚点事件

  13. 具体实现 • Generalized intersection event • 早期定义 • 边事件:边减为0 ,例1 • 分割事件:相邻面与另一不相邻面相交,例3 • 顶点事件:多于三个平面相交,例2 • 通用定义 • 都是顶点事件的变形

  14. 具体实现 • Generalized intersection event • 自动发生 • 拓扑的改变 • 在active plan 上拓扑的进行修改以保证不会发生自相交 • 事件检测 • 用膨胀边界的方法 • 问题: • 多个平面汇聚在一点(水平的),在一定范围内要当做一个事件处理 • 在近似同一高度上距离很远的两个相交事件可能互相干扰,要收集做统一处理

  15. 具体实现 • Generalized intersection event • 聚类 • 取出相交事件,聚集事件发生的z值在一定阈值内的事件 • 再通过在xy平面的投影,找出距离阈值满足的事件 • 失败情况:一系列点彼此满足阈值

  16. 具体实现 • Generalized intersection event • 链的构建 • 用与聚类后事件相关的边构建一个链的集合 • 链hi由相邻边构成 • 这些链在两种情况下更新活动平面:链内(intra-chain),和链间(inter-chain) • 链内(intra-chain):内部边缩为0 则去掉 • 链间(inter-chain): 链内只有一条边则加角点分为两条边,多条边则加点,顺次连接。最后去掉无关联的角点

  17. 具体实现 • Generalized intersection event • 筛选无效事件(filtering invalid events): • 在clustering 之前 移除无效的边 ,原因:用无边界的方向平面检测相交事件,可能在活动平面上有些边不会接近交点l • 在前一个事件中移除的边也要从边集f中移除。 • 最后如果边集小于3,事件忽略。 • 非连通事件(Local non connected event):大规模建模时,非连通的区域可能发生相交事件 • 链中边形成环,链被移除;如果有多于一个只有一条边的链,相关的边一定平行,相邻链中得几何体也要移除(形成一条脊),一个链嵌套在另一个链中,链间事件将失效,这时可以反转闭合链。但在现实建筑中没有这样的例子

  18. 具体实现 • Edge direction events • 根据profile更新边集的角度和方向平面 • standard:不等于正负90度 • 输入由单独角度构成,输入边集和新的角度 • 输出新的 active plan • horizontal:角度为正负90度 • 输入 • 与同一profile关联的边集f • 连续两角 • 距离d • 输出 • 新的 active plan

  19. 具体实现 • horizontal: • 新建临时plan,边 ,角 • 挤出,投影,替换

  20. 具体实现 • horizontal: • 更新角度 • 在同一高度发生多个边方向事件按用户创建顺序排序,用户可手动控制优先级

  21. 具体实现 • Profile offset events • 明确了屋檐的开始,难点在于过程定义,在更新active plan 的过程中避免自相交 • 输入 • disabled 布尔值,表明边关联的偏移区域是否要在输出中表现 • dist_insidedist_outside定义了向偏移边界里或外的距离和方向,正向外,负向内,要求同号 • Profile 定义了内外边的轮廓

  22. 具体实现 • Profile offset events • 步骤 • 用active plan 向 0平面投影得到temporary plan 其中边 eji投影得Eji和对应的profile_recursiveij它定义了 • z=0时 就能得到内边对应的扩展边 • z=1 时 得到外边对应的扩展边

  23. 具体实现 • Profile offset events • 步骤 • 执行 procedural extrusion, z=0到z=2  得到 外壳 shell 对 z=1 到 2之间的平面投影就 得到偏移区域,用来构建屋顶 

  24. 具体实现 • Profile offset events • 步骤 • profile 更新 r为偏移区域的边集 为临时外壳的轮廓  • 移除面积为0或diabled=true的区域 • 最后合并相邻区域来阻止自交

  25. 具体实现 • Insertions into the polygon • Forced steps 插入固定 • 不能保证不自交可能产生无效的拓扑

  26. 具体实现 • Insertions into the polygon • Natural steps 依靠过程式挤出的递归解决

  27. 具体实现 • Ambiguities in Procedural Extrusions • 通常出现在同一侧的两相邻边合为一条线的时候

  28. 具体实现 • Ambiguities in Procedural Extrusions • 解决 • 以全局视角解决这种歧义 • 合并所有连续的共线的边,这个边采用有最高优先级的边的profile • 优先级方案 • 1最小得关联角度(-PI/2)的边有最大优先级 • 2用户定义

  29. 成果

  30. 成果

More Related