Axiom3D学习日记 3.Cameras, Lights, and Shadows
2015-11-30 16:44
316 查看
Camera 相机:
相机基础知识不写了,需要注意的是:axiom目前不支持同时操作多个相机.
创建,设置位置基本操作.
ViewPort(视口)
当要显示多个窗口时候用,这个我不怎么需要,就不写了.
Shadows in Axiom(重点来了)
Axiom有3种不同阴影.
纹理阴影:计算成本最低的一种.
Modulative Stencil Shadows:较第三种没那么密集
Additive Stencil Shadows:会叠加计算每个灯光的阴影,对GPU来说是比较大的负担.
遗憾的是:Axiom不支持软阴影,如果需要软阴影,需要自己写顶点和片段程序.
使用阴影非常容易:
灯光:
灯光类型:
Point (LightType.Point) - 点光源,各个方向.
Spotlight (LightType.Spotlight) - 聚光灯
Directional (LightType.Directional) - 平行光
创建灯:
相机基础知识不写了,需要注意的是:axiom目前不支持同时操作多个相机.
创建,设置位置基本操作.
_camera = _scene.CreateCamera("MainCamera"); _camera.Position = new Vector3(0, 10, 200); _camera.LookAt(Vector3.Zero);
_camera.Near = 5;决定了相机可视范围.
ViewPort(视口)
当要显示多个窗口时候用,这个我不怎么需要,就不写了.
Shadows in Axiom(重点来了)
Axiom有3种不同阴影.
纹理阴影:计算成本最低的一种.
Modulative Stencil Shadows:较第三种没那么密集
Additive Stencil Shadows:会叠加计算每个灯光的阴影,对GPU来说是比较大的负担.
遗憾的是:Axiom不支持软阴影,如果需要软阴影,需要自己写顶点和片段程序.
使用阴影非常容易:
scene.AmbientLight = ColorEx.Black; scene.ShadowTechnique = ShadowTechnique.StencilAdditive; Entity ent = scene.CreateEntity("ninja", "ninja.mesh"); ent.CastShadows = true; scene.RootSceneNode.CreateChildSceneNode().AttachObject(ent);
灯光:
灯光类型:
Point (LightType.Point) - 点光源,各个方向.
Spotlight (LightType.Spotlight) - 聚光灯
Directional (LightType.Directional) - 平行光
创建灯:
Light pointLight = scene.CreateLight("pointLight"); pointLight.Type = LightType.Point; pointLight.Position = new Vector3(0, 150, 250); pointLight.DiffuseColor = ColorEx.Red; pointLight.SpecularColor = ColorEx.Red;
Light spotLight = scene.CreateLight("spotLight"); spotLight.Type = LightType.SpotLight; spotLight.DiffuseColor = ColorEx.Blue; spotLight.SpecularColor = ColorEx.Blue; spotLight.Direction = new Vector3(-1, -1, 0); spotLight.Position = new Vector3(300, 300, 0);
相关文章推荐
- oracle 消除块竞争(hot blocks)
- 网络爬虫基本原理(二)
- Android Activity进出动画
- 去掉webView滚动条 swift
- 第13周 项目3-Dijkstra算法的验证
- 项目3 — 是否二叉排序树?
- 第十二周项目3 广度遍历
- 第十二周项目4-利用遍历思想求解图问题(2)
- iOS学习之点击TableViewcell实现跳转
- insertRowsAtIndexPaths errors
- 小白学算法2.5.1——归并排序(自底而上)
- Android 5.0.1(Lollipop)源码的下载、编译(eng版本)并烧录
- 第十四周项目一 (1)验证算法——递归的折半查找算法
- Android中dip、dp、sp、pt和px的区别
- 使用HttpCLient处理HTTP请求
- 查看LINUX进程内存占用情况
- C++primer plus第六版课后编程练习答案11.2
- sublime text3 emmet插件安装
- iOS从相机或相册获取图片并裁剪,再获取裁剪后的图片
- 第14周 项目1(3)-二叉排序树