基于DirectX9.0重力坝三维体型设计(一)挡水坝段2
来源:互联网 发布:mac windows 隐藏文件 编辑:程序博客网 时间:2024/05/17 08:53
前记:
自从上次写完之后已经好久没有写文章了,主要是在三维图形的开发遇到了一些棘手的问题一时总是想不通。在此期间,查阅了一些资料看了一些关于计算机图形学的书,虽然是走马观花的看了一遍,但终归对计算机图形学有了初步的了解,也算是一种进步吧!虽然自己的迷惑没有解开,但是在三维开发的路上又走了一小步,师兄说后面的路还很惨任重道远啊!这次实际上没有技术上的突破,只是有些学习中的问题,记录一下,也算跟我一样初步学习的同学一些参考吧!
首先,展示一下最近的成果如下图所示:
这次的三维坝体的效果明显比上次有了一些进步,而且实现了参数化的控制,不过目前坝体还只是一个基本体型,距离实际还差很远(其中也是自己比较迷茫的地方)
先说效果的变化,这次主要是采用了灯光,而且体型参数也经过优化更接近实际(假如使坝体看上去更加真实,可以添加纹理映射)。现在就列举一下在开发过程中遇到的一些问题。
(1)顶点法线设置
顶点法线的设置是为了辨别顶点和光线的夹角,实现灯光效果。每个不同的面上的顶点法线都不相同,所以在设置顶点法线时应该以面为单位(4个顶点)计算面的法线方向(原理就是根据向量的叉乘)。顶点法线的计算函数如下:
图中的过渡效果其实是一个错误,不过看起来效果还蛮不错,也就这样了。原因是面上的两个顶点法线设置了一个错误方向。
(2)灯光设置
在灯光设置过程中一般都会设置两个光源,比如说本人设置了两个不同方向的平行光,此处一定要注意平行光属性中的Direction是光的照射方向,而且两个光源的照射方向最好成一个90°夹角。代码如下:
(3)材质设置
材质设置的目的是为了反射光,假如不设置材质的话物体是黑色的。在材质中有两个属性 一个是Diffuse(物体的漫反射),一个是Ambient(物体反射的环境光),这两个最好设置同一种颜色,大家可以自己尝试一下。材质设置同样封装到一个函数中,代码如下:
后记:这次就到这里,文中有什么错误之处,或是大家有好的想法,可以发邮件和我交流。本人邮箱:zhiyuanhou@126.com
- 基于DirectX9.0重力坝三维体型设计(一)挡水坝段2
- 利用DirectX 9.0 三维重力坝体型设(一)挡水坝段绘制
- DirectX9.0 入门手册(2)
- DirectX9.0 入门手册(2)
- DirectX9.0 入门手册(2)
- DirectX9.0 Tutorial 2 Vertices
- 深入Managed DirectX9(一)
- DirectX9学习(一)
- 在DirectX9.0中使用Mesh (2)
- DirectX9.0 开发学习(一):向量几何基础知识
- 基于kinect的三维动作重现(一)
- DirectX9.0 入门手册
- DirectX9.0 入门手册
- DirectX9.0 入门手册
- DirectX9.0矩阵
- DIRECTX9.0绘制流水线
- DirectX9.0 着色
- DirectX9.0 入门手册
- 80年代初中国的电影
- Linux 驱动--ADC驱动
- Win7 XP双系统
- AHCI驱动
- hibernate :java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
- 基于DirectX9.0重力坝三维体型设计(一)挡水坝段2
- Ubuntu10.04下build OpenJDK7 的过程
- 不同的客户组看到不同的产品!!插件
- 魔兽争霸剧情
- 关于(Unicode,UTF8) 汉字内码转换的两段代码
- java中public class与class区别
- C#代码收集
- 最简单实用的profiler(适用于紧急排除线上故障)
- SeekBar的拖动的事件监听