3D渲染引擎 OGraph
摘要:该引擎的目标在于能够渲染3D场景,和可视化复杂网络;并且支持方便的数据接口,游戏一般的交互体验。引擎嵌入python为用户提供API,编写python代码读取处理数据后提交到渲染接口,即可实时渲染。使用浏览器内核向用户展示UI,管理场景对象树、对象属性。用户也可以自己重新编写html页面自定义右侧界面布局。使用OpenGL着色语言,支持渲染点光源,法线贴图;并且支持渲染不受光源影响的点、线,来绘制复杂网络。复杂网络布局算法内嵌在引擎,支持二维、三维、布局力向导布局算法,并建立在YiFan-Hu的最大熵模型上。
效果图:
- 场景中地板、墙使用了法线贴图,麻将模型未使用法线贴图。
- 点、线的渲染使用跟模型不同的shader,不受光源影响。
- 点光源阴影使用ShadowMap计算,为了减少光源计算,阴影只计算一次。
Python脚本:
# SettePy.AddPointLight(12,7,12, 0.9,0.0,0.0)
SettePy.AddPointLight( -1,7,-6, 0.5,0.4,0.3)
SettePy.AddPointLight( 1,7, 7, 0.4,0.5,0.3)
# SettePy.AddTextureMaterial("wood2","IMG/wood2.jpg")
# SettePy.AddTextureMaterial("wood1","IMG/wood1.jpg")
SettePy.AddTextureMaterial("jinsu","IMG/jinshu.jpg","IMG/jinshu_nrm.jpg")
# SettePy.AddTextureMaterial("jinsu","IMG/jinshu.jpg")
SettePy.AddBox("default","jinsu",60.0,1.0,60.0,0,-1,0,4)
SettePy.AddBox("default","jinsu",60.0,1.0,60.0,0,12,0,4)
SettePy.AddBox("default","jinsu",1.0, 25.0,60.0,-30,12,0,4)
SettePy.AddBox("default","jinsu",1.0, 25.0,60.0, 30,12,0,4)
SettePy.AddBox("default","jinsu",60.0,25.0,1.0, 0,12,-30,4)
SettePy.AddBox("default","jinsu",60.0,25.0,1.0, 0,12,30,4)
# SettePy.AddBox("default","wood1",6.0,6.0,6.0, 7,3,0)
# SettePy.AddBox("default","wood2",6.0,6.0,6.0, 0,6,8)
# SettePy.AddBox("default","wood1",6.0,6.0,6.0, -7,3,0)
SettePy.AddLayer("root","objs_layer")
SettePy.AddObjFile("objs_layer","OBJS/mj/yaoji.obj",0.04,-5,0.1,1)
SettePy是C++向python注册的模块,向python提供接口