经过几天的努力, 找了很多资料, 也看了很多论文, 终于实现了SSS效果. 本来想采用Translucent Shadow Maps, 最后还是使用了另外的方法实现.

  截图: (按F1 激活/禁用 diffuse color)

  1.) 没有使用diffuse color的效果:

  

  2.) 使用diffuse color后的效果:
  
   
  
   注: 如果应用在人物皮肤上, 效果会更好看些 ^_^!

   程序代码: /Files/vibilin/SubsurfaceScattering.rar
posted @ 2009-12-11 14:56 vibilin| 编辑 收藏
 

根据如下公式, 实现了一个HDR(High Dynamic Range)效果.

Tone Map = (HDR Scene) + (Blur Scene) ; 

Blur Scene = ( (HDR Scene) => (1/4 Size Frame) => (Vertical Gaussian Filter) => (Horizontal Gaussian Filter) );

截图:
Exposure Level(曝光度) = 0.1



Exposure Level(曝光度) = 5



程序代码: /Files/vibilin/HDRRendering.rar

posted @ 2009-12-02 15:30 vibilin| 编辑 收藏
 

分别采用 (PCF)Percentage Closer Filtering 和 Gaussian Blur 方式实现了阴影效果. (开始由于坐标问题, 困惑了很久, 不过最后还是出效果了)

注: 按 S 键切换阴影类型, W键显示/关闭线框模式.

PCF效果:


Gaussian Blur效果:



程序代码: /Files/vibilin/SoftShadowMap.rar
posted @ 2009-11-27 22:32 vibilin| 编辑 收藏
 

采用了World-View-Projection Matrix 实现快速裁剪, 比较简单, 不过非常有效.

裁剪前, 一共有200个Sphere(包括可见的和不可见的):



裁剪后:



程序代码: /Files/vibilin/FrustumCuller.rar

posted @ 2009-11-24 20:10 vibilin| 编辑 收藏
 
经过近一个月的努力,  终于实现了一些基本的功能, 不过由于时间原因, 剩下的Z-Buffer和D3DFILLMODE渲染模式等功能, 将等以后有时间后再补上. 非常感谢 流失的时光  的代码分享以及ChunkHao 的经验交流.  写这个模拟程序目的也是为了总结一些以前学过的很基础的知识,  欢迎大家互相学习交流.



程序代码: /Files/vibilin/SoftRender.rar
posted @ 2009-11-17 17:23 vibilin| 编辑 收藏
 

根据Skinned Mesh的基本原理, 实现骨骼动画. 程序中并没有使用D3DXLoadSkinMeshFromXof, ID3DXSkinInfo::UpdateSkinnedMesh等辅助函数,  完全是手动编码读取和处理蒙皮信息.并将蒙皮信息应用到骨骼和Mesh上.

程序截图:



程序代码: /Files/vibilin/SkeletalAnimation.rar

相关文章参考: Skinned Mesh原理解析和一个最简单的实现示例
                         Advanced Animation With DirectX.pdf
posted @ 2009-11-15 19:16 vibilin| 编辑 收藏
 
 参考 Spherical Harmonic Lighting, the Gritty Details, by Robin Green. http://www.research.scea.com/gdc2003/spherical-harmonic-lighting.html  文档,  实现了使用SH渲染由D3DXCreateBox和D3DXCreateTorus建造的模型的阴影效果.




(注) 在代码中文件 "sphere.mesh"和 "torus.mesh"  存储的数据是分别由 D3DXCreateSphere(m_pd3dDevice, 1.0f, 32, 16, pObject->m_pMesh, NULL),D3DXCreateTorus(m_pd3dDevice,1.0f, 16, 32, pObject->m_pMesh, NULL) 函数生成后导出的.

程序代码和采样数据: /Files/vibilin/SHProject.rar
posted @ 2009-10-26 15:53 vibilin| 编辑 收藏
 

   将由D3DXCREATE* 函数创建的模型数据导出到文件后, 再导入文件的数据重构模型.

   以下分别是程序截图和代码片断:


    

   

     最后附上可执行程序和CMeshIO的实现代码: /Files/vibilin/MeshIO.rar
    
posted @ 2009-10-23 17:13 vibilin| 编辑 收藏
 
1. openBrf是BRF文件编辑器. (游戏<骑马与砍杀>的模型导出导入工具.)

    执行程序和源代码下载地址:
    http://www.mbrepository.com/download.php?id=1466&f=openBrf.zip
    http://vcg.isti.cnr.it/~tarini/files/mab/openBrf_source.zip

2. 编译前,还需要额外的工具QT以及VCG

   下载地址:
    http://get.qt.nokia.com/qtsdk/qt-sdk-win-opensource-2009.03.1.exe
    (SVN) https://vcg.svn.sourceforge.net/svnroot/vcg/trunk/vcglib

3. 安装qt

4. 将openBrf源代码的解压文件夹(openBrf_source)拷贝到Qt\2009.03\qt\demos目录下

5. 将VCG目录下的apps, docs, img, vcg, wrap五个文件夹复制到Qt\2009.03qt\demos\openBrf_source下

6. 在Qt\2009.03\qt\demos\openBrf_source目录下新建release和debug目录

7. 在Qt\2009.03\qt目录下新建vcglib目录, 并将wrap拷贝一份到这里

8. 使用QT打开openBrf_source目录下的openBrf.pr工程文件

   
posted @ 2009-09-18 21:34 vibilin| 编辑 收藏
 
1. 安装stackless Python2.5

     地址:  http://www.stackless.com/binaries/python-2.5.2-stackless.msi

     注意: 如果需要在Vista系统安装, 必须使用2.6版本, 不然将会出现ntdll.dll运行错误.

2. 下载stackless Python2.5依赖包, 解压到stackless Python2.5的安装目录下. 将解压后目录下的

     地址:  http://www.stackless.com/binaries/stackless-252-export.tar.bz2

3. 下载msvcr71d.dll, 解压到stackless Python2.5的安装目录下(2.6.2版本忽略此步).

     地址:  http://www.dll-files.com/dllindex/msvcr71d.zip?0VHdRFZLlX

4.  将stackless Python2.5的include, lib目录添加到VC++ Directories的include files和Library files中(Tools/Options../Projects and Solutions/VC++ Directories)

     注: 如果你安装的是stackless Python2.6, 则还需要下载VC2008的运行库(Microsoft Visual C++ 2008 Redistributable Package)

          地址: http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn

5.  打开控制台, 输入c:\Python26\Lib\idlelib\idle.py(假设Python安装在C盘下), 如果IDLE (Python GUI)没有启动.并且在控制台中输出以下信息 就需要将Python26\tcl文件夹下的
     tcl8.5和tk8.5复制到Python26\Lib文件夹下.
     
        self.tk = _tkinter.create(screenName, baseName, className, interactive, want
        objects, useTk, sync, use)
       _tkinter.TclError: Can't find a usable init.tcl in the following directories:

       或者
       self.tk = _tkinter.create(screenName, baseName, className, interactive, want
       objects, useTk, sync, use)
       _tkinter.TclError: Can't find a usable tk.tcl in the following directories:


       



posted @ 2009-08-29 09:32 vibilin| 编辑 收藏
仅列出标题
共2页: 1 2