在3D系统中(这里主要指实时渲染3D引擎系统), 可以管理 可渲染实体(renderable entity)的容器(Renderable Entity Container),是一个重要的功能。但这也只是一个重要的功能而已。有些3D引擎的设计架构完全以容器的操作方式来管理可渲染实体的渲染树状结构。这样的设计看似好操作,实际上却导致渲染器和逻辑功能过度耦合,更不利于算力/灵活逻辑的发挥, 也不符合类分布式结构设计的理念。所以在这里的引擎结构设计里,容器(Renderable Entity Container)和渲染管理以及渲染实体之间没有过多的逻辑结构关系,它有四个方面的作用:
1.渲染对象实体管理: 通过容器的树状结构来管理 Renderable Entity/Container 集合。维护层次逻辑关系。
2. Trasformation: 空间坐标变换。
3.空间管理: 为引擎系统的空间管理机制提供支持。例如遮挡剔除/排序/物理计算等
4.渲染管理: 容器和其他渲染管理系统一样,是整个渲染管理系统中重要的一环,能有效的管理渲染流程。
而容器(Renderable Entity Container)本一个非常轻量的管理机制,不会干扰到其他渲染管理以及算力分配。在逻辑功能上,对用户来讲也是低耦合的。可以用,也可以选择不用。
相关设计理念请见:
1. 引擎系统设计思路 - 支撑高效能3D虚拟视觉系统的七个维度-CSDN博客
2. 引擎系统设计思路 - 用户态与系统态隔离-CSDN博客
请见Demo: Vox APP
Demo里面的描边效果请见:带遮挡效果的轮廓线(描边)在3D实时渲染中的一种实现_vily_lei的专栏-CSDN博客