惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
腾讯CDC
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
B
Blog
S
SegmentFault 最新的问题
P
Privacy & Cybersecurity Law Blog
T
Threatpost
博客园 - 聂微东
T
Tailwind CSS Blog
The Last Watchdog
The Last Watchdog
C
Check Point Blog
N
Netflix TechBlog - Medium
D
DataBreaches.Net
爱范儿
爱范儿
IT之家
IT之家
S
Secure Thoughts
M
MIT News - Artificial intelligence
NISL@THU
NISL@THU
C
Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
有赞技术团队
有赞技术团队
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
Schneier on Security
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
雷峰网
雷峰网
Project Zero
Project Zero
博客园 - Franky
H
Heimdal Security Blog
A
About on SuperTechFans
Security Latest
Security Latest
Webroot Blog
Webroot Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - SoRoMan

思考:矩阵的级联顺序与坐标系的关系 MFC的一些宏的整理 (DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE) 关于STL Improve Performance of C++ Codes (2) -- 如何消除临时对象? Improve Performance of C++ Codes (1) -- 使用初始化列表还是赋值语句? 关于万向节死锁(Gimbal Lock)(续) 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,... 读书笔记:Writing Solid Code (4) 读书笔记:Writing Solid Code (3) 读书笔记:Writing Solid Code (2) 读书笔记:Writing Solid Code A 3D Real Time Fluid Solver Demo (三维实时流体解算器) 笔记:Delaunay三角剖分(Delaunay Triangulation)相关知识 学习经验:逐步建立学习资源列表-计算机图形学 SL专题6:谈谈Second Life中的游戏制作(Game Dev in SL) SL专题4:Second Life畅销商品 SL专题3:Second Life市场分析 SL专题2:加入并熟悉Second Life世界 SL专题1:Second Life(第二生命)--迟早火爆世界的游戏与Web的集大成者
Scene Management - Scene Graph
SoRoMan · 2009-12-31 · via 博客园 - SoRoMan

Scene Graph故名思意就是场景图,或者说是用来组织场景的一种“图”数据结构,通常是以逻辑关系(比如整体-部分)划分数据,当然也有按照其它关系(比如空间关系,状态等)划分数据的。其特点是都是层次结构,层次结构的好处是某个层次的数据的规模相比整体数据能大规模衰减,缩小规模当然能提高效率。常见的Scene Graph实现有有向非循环图(DAG),无向非循环连通图(UDCG Tree)等结构。

来看看使用SG的好处是什么,先来看看别个的Scene Graph实现。

WildMagic (ver 1.07)


特点:

  • 场景图的结构方面:以Tree来实现,即Node0-1Parent Node0-*Child Node
  • 优点:使用Tree,非常简洁明了,方便Traverse,从上至下,从下至上。
  • 缺点:NodeGeometry共同继承自Spatial,容易造成基类Spatial的膨胀,无论是成员还是接口,实际上有些NodeSpatial属性不多,象Light
  • 缺点:使用Tree,造成某些Nodeshare上麻烦,比如Geometry EntityShare,类GeometryParent最多只有一个,如果想共享Geometry,必须生成多个Geometry挂到不同的Node下。
  • 几何实体与场景图的关系:Geometry Entity不是Node,挂在Node
  • 如何裁剪Cull:包含BVH
  • 渲染状态的处理:不支持State Sort
  • 其它细节:
  • Transform不是Node
  • LightNode
  • Camera 不是Node

OSG (ver 2.8.1)


特点:

  • 场景图的结构方面:以DAG来实现,Node0-*Parent NodeGroup Node 0-*Child Node
  • 优点:使用DAG,能方便的共享Node,易于扩展。比如:Geometry的共享。
  • 缺点:包含多个Parent Nodes的时候不方便Traversal
  • 几何实体与场景图的关系:Geometry Entity不是Node,挂在Node
  • 如何裁剪Cull:包含BVH
  • 渲染状态的处理:支持State Sort,支持State Cache
  • 优点:State Sort,相同State Set的一块渲染,减少渲染State切换的开销。
  • 优点:State Cache,在State有必要的时候才去更新,减少State频繁的切换和查询。
  • 其它细节:
  • TransformNode
  • 优点:Transform作为NodeShare Transform Data,减小了Node的大小。
  • LightNode
  • Camera Node

OGRE (ver: v1-4-7)


特点:

  • 场景图的结构方面:以Tree来实现,以Tree来实现,即Node0-1Parent Node0-*Child Node
  • 优点:使用Tree,非常简洁明了,方便Traverse,从上至下,从下至上。
  • 几何实体与场景图的关系:Geometry Entity不是Node,挂在Node下,Geometry可以方便的被不同Node共享。
  • 如何裁剪Cull:包含BVH
  • 渲染状态的处理:支持State Sort
  • 优点:上层支持Render StrategySort,底层支持Material/Texture NameSort
  • 其它细节:
  • TransformNode
  • 优点:Transform作为NodeShare Transform Data,减小了Node的大小。
  • LightNode
  • Camera Node