游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3120|回复: 9

请教Introduction to 3D Game Programming with Directx 9.0中卡通渲染问

[复制链接]

27

主题

79

帖子

87

积分

注册会员

Rank: 2

积分
87
发表于 2007-4-12 15:03:00 | 显示全部楼层 |阅读模式
最近在看Introduction to 3D Game Programming with Directx 9.0,在卡通渲染那里按照书上的步骤,对照代码自己做了一遍(我觉得和原来的例子一模一样了),但是渲染效果不对.我的开发环境是 VS.2003+dxsdk_aug2006,反复检查了多遍,现在可以确定是设置纹理的时候没有达到预期效果.Shader 代码片段如下 原意是计算出光线法向量和光源方向的点积,然后设成纹理的横坐标,因为纹理图横向有三段区间,所以会渲染成卡通的有明显颜色突变的效果.但是我的似乎点积算出来为一个常量(可能是0,所以整个都是灰暗的,由于shader写在TXT里面,我不知道如何调试,所以不能肯定).是用D3DXCreate..生成的茶壶,圆柱之类的MESH。请问可能是什么原因啊,附件发不上来,也没超过500K,老是错误。

....
float u=dot(LightDirection,input.normal);

  if(u<0.0f) u=0.0f;

  float v=0.5f;

  output.uvCoords.x=u;
  output.uvCoords.y=v;
...

27

主题

79

帖子

87

积分

注册会员

Rank: 2

积分
87
 楼主| 发表于 2007-4-12 20:35:00 | 显示全部楼层

Re: 请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

分下来传试试

sf_2007412203436.rar

139.14 KB, 下载次数:

27

主题

79

帖子

87

积分

注册会员

Rank: 2

积分
87
 楼主| 发表于 2007-4-12 20:40:00 | 显示全部楼层

Re: 请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

晕 超过200K好像传不上去,上面的是书里提供的正确的代码,这是我的代码,由于上传大小限制,我把DXUT的COMMON文件夹删了,我用的是dxsdk_aug2006,在此环境下调试。

sf_2007412203934.rar

11.88 KB, 下载次数:

12

主题

217

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2007-4-14 14:11:00 | 显示全部楼层

Re:请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

你VS里?算的光?向量方向是反的,??????我前面??的?r候有注意到?.
???是???ightDir= -normal(mul(LitVector,matView)),所有你??蓄?色灰暗的??.
其??你看到的是?]有光照的部分.

PS.很多网上教程里?于cartoon渲染光?向量是反的.??的?也可以用sdk里的effectedit,或者往上找一下NV的FX compiler

27

主题

79

帖子

87

积分

注册会员

Rank: 2

积分
87
 楼主| 发表于 2007-4-14 21:14:00 | 显示全部楼层

Re: 请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

我试过了不是这个问题,shader代码本身应该没有问题,因为和上面正确的例子里是一样的,我把设置settexture那行代码注释掉会变的比较亮,说明还是有光的。应该是纹理问题,设置纹理图的时候计算出来的所有顶点的法向量和光源方向的点积似乎是常数,那些D3DXCreateTeapot之类生成的每个点应该本身包含法向量信息的,想不通为什么我的出了问题。

12

主题

217

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2007-4-16 19:13:00 | 显示全部楼层

Re: 请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

我上面已??明白例子是?的吧?

27

主题

79

帖子

87

积分

注册会员

Rank: 2

积分
87
 楼主| 发表于 2007-4-16 19:35:00 | 显示全部楼层

Re: 请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

晕,上面我传了两个,第一个例子是对的,第二个我的才是有问题的。

16

主题

114

帖子

114

积分

注册会员

Rank: 2

积分
114
发表于 2007-4-16 20:47:00 | 显示全部楼层

Re:请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

关主ing

16

主题

114

帖子

114

积分

注册会员

Rank: 2

积分
114
发表于 2007-4-16 21:24:00 | 显示全部楼层

Re:请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

看样子 if(u<0)总是成立,不知为什么。

27

主题

79

帖子

87

积分

注册会员

Rank: 2

积分
87
 楼主| 发表于 2007-4-16 22:59:00 | 显示全部楼层

Re: 请教Introduction to 3D Game Programming with Directx 9.0中卡通渲

也不一定,加了负号还是不行,可能每个点算出来一个常量或者所有值落在同一个颜色的纹理区间里面了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 19:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表