A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 1579|回复: 5

游戏技术问题

[复制链接]
该用户已被禁言

精华
0
帖子
6629
威望
0 点
积分
6477 点
种子
0 点
注册时间
2004-10-8
最后登录
2011-11-7
 楼主| 发表于 2004-12-15 18:38  ·  浙江 | 显示全部楼层 |阅读模式
那天听一个同学说,卡通渲染是伪3D,是真的吗?
那怎么样的才是真的呢?.

精华
0
帖子
401
威望
0 点
积分
439 点
种子
0 点
注册时间
2004-10-21
最后登录
2020-5-23
发表于 2004-12-16 03:20  ·  台湾 | 显示全部楼层
你同學不懂吧

你問他做過3D的東西沒有

3D是作出骨架之後在外面貼上SKIN(皮膚)

卡通渲染只是在SKIN的著色上以不同的方法讓他有卡通的感覺

並不是什麼偽3D...
该用户已被禁言

精华
0
帖子
113
威望
0 点
积分
113 点
种子
2 点
注册时间
2004-7-20
最后登录
2019-12-3
发表于 2004-12-16 04:23  ·  山东 | 显示全部楼层
卡通渲染 英文是 Cell Shadowing 是3D渲染中的一种特定应用

这是一项将3D物体转为类似2D手绘的卡通风格的技术,它在近几年火***流行起来大概要归功于2000年世嘉的子公司Smilebit制作的DC游戏“Jet Grind Radio”,此后,游戏机平台上许多游戏都运用了这项技术,包括任天堂的塞尔达传说:风之杖这样的名作

有人称他为2.5D,但定义不够准确, 卡通渲染应该是2.5D中的一个组成部分。现在通常说的2.5D,大部分是指不完全的3D,有的是2D场景3D人物,有的则是3D场景2D人物,而且主要指后者,同时还包括一些其他的不完全3D,比如虽然使用的也是3D引擎,而且是3D场景和人物,但固定视角,或者部分锁定。(例如可以左右360度旋转,不能上下旋转)这些带来美术工作和程序表现与纯3D的差异。有的游戏是假3D(仿、伪3D),应该不能称作2.5D。

从技术角度而言,卡通渲染采用的引擎底层依然是3D引擎,但同时在图象模块里包含了2D图象显示技术,而别的引擎包含模块与传统3D游戏引擎是无多大区别。

3D建模+2D贴图,这个是最通俗的理解方式。

2.5D在动画、电影里很多都有应用,其中最有影响力应用该算日本卡通片,如《千与千寻》《青之六号》《Macross:Zero》《攻壳机动队》等影片中。

它的主要原理就是根据面法线和摄象机方向判断出轮廓边,(边是用退化4元组表示的)然后平移退化4元组,因为4元组有2个固定点(W分量为0),所以平移会使退化4元组被渲染出来.退化4元组简单理解为4个顶点两两重合,以三角形图元渲染的话,它是不会被渲染出来的.

卡通渲染是一种特定类型的非写实渲染(non-photorealistic rendering),有时被称作风格化渲染(stylistic rendering)。

它可以增强一些希望表现卡通感觉类型游戏的气氛。此外,卡通渲染相当易于实现,并让我们得以漂亮的演示顶点着色器。

我们可以将卡通渲染分割为两步:

1. 卡通绘图典型的很少有在两种着色间强烈过渡的着色强度(luminance)级别;我们称此为卡通着色(cartoon shading)。卡通着色只用了三种着色强度(亮、中、暗)对网格进行着色,而且其间的过渡是不连贯的——不像其他的3D动画中明暗过渡是平滑的。

2. 卡通绘图也典型的有其轮廓边被勾出。
该用户已被禁言

精华
0
帖子
113
威望
0 点
积分
113 点
种子
2 点
注册时间
2004-7-20
最后登录
2019-12-3
发表于 2004-12-16 04:25  ·  山东 | 显示全部楼层
补充一篇技术文档:

D3D中卡通渲染效果的描边技术
来自《Introduction to 3D Game Programming with DirectX 9.0》
linyizsh译


   为了完成卡通效果,我们还需要描画轮廓的边。这要比卡通着色更棘手一点。
*边缘表示
   我们用一个四边形(由两个三角形构成)来表示一个mesh的边。如下图:

v1    v3
|------|
|    |
|    |
|    |
|    |
|    |
|    |
|------|
v0    v2

   我们用四边形来表示是基于以下两个原因:通过调整四边形的大小我们可以很容易的改变边缘的宽度,我们可以通过渲染退化的四边形来隐藏非轮廓的边,在direct3D里面我们通过两个三角形来组成一个四边形。退化的四边形是由两个退化的三角形组成。一个退化的三角形即是一个没有大小的三角形,换句话讲,就是三角形的三个顶点在同一条直线上。如果我们把一个退化的三角形推进渲染管道,画面上将不会显示任何东西。这是非常有用的,因为如果我们想要隐藏某个特定的三角形的时候,我们可以简单地退化它而不必把它从三角形序列(顶点缓冲)中移除。记住我们只是想显示轮廓的边--而不是mesh的所有边。
当我们第一次创建一个边的时候,我们指定它的四个顶点以便于退化,意思是我们将隐藏这个边(渲染的时候不显示)。

    v1=v3
|------|
|    /|
|   / |
|  /  |
|  /  |
| /   |
|/    |
|------|
v0=v2

   注意对上图中的两个顶点v0和v1,我们设置它们的法线向量为0向量,那么当我们把边的顶点数据送入vertex shader,shader程序将测试一个顶点是否在轮廓的边上;如果是,vertex shader将把顶点的位置向法线的方向偏移一个数值,显然,那些法线向量为0的顶点将不会偏移。
因此,最后,我们以一个非退化的四边形来表示边。如下图所示:

v1     v3
|------->|
|  n3  |
|      |
|      |
|      |
|  n2  |
|------->|
v0     v2
(图:顶点v2和v3在轮廓的边上,分别向它们的法线方向n2和n3偏移一个数值。显然,如果它们的法线向量为0,那么v0和v1仍然在它们原来的位置,而不会发生偏移。用这种四边形的方法,成功的表示了轮廓的边。)

*测试轮廓的边
   如果与边相邻的两个面相对于视线的方向有不同的方向,那么这个边就是轮廓的边。意思是如果一个面是面向前面而另一个面是面向后面,那么边就是轮廓边。下面的图是一个轮廓边和非轮廓边的例子:

                  v1
                  /
                  /|
                n0/ |  n1
                /  |  
view direction-->      |  /
                  |  /
                  | /
                  |/
                  v0
             (v0、v1边为轮廓边)
                  v1
                  /
                  /|
                n0/ |  n1
                /  |  
                  |  /
                  |  /
                  | /
                  |/
                  v0

                  |
                  |
              view direction方向
            (v0、v1边为非轮廓边)

为了测试一个顶点是否在轮廓边上我们必须知道两个面face0和face1上每个顶点的法线方向。我们的边的顶点数据结构如下:
struct VS INPUT
{
     vector position   :POSITION;
     vector normal    :NORMAL0;
     vector faceNormal1 :NORMAL1;
     vector faceNormal2 :NORMAL2;
};
前两个成员的意思非常清楚,但是我们看到两个额外的法线向量,叫做faceNormal1和faceNormal2。这两个向量描述共用这个边的两个面(face0和face1)的法线。
   下面用数学的方法来测试一个顶点是否在轮廓边上。假设我们在view空间里。令v为从原点到我们要测试的顶点的向量--如上图,n0为面face0的法线,n1为面face1的法线。那么满足下面的不等式的顶点就是轮廓上的点:
(1) (v*n0)(v*n1)

精华
0
帖子
141
威望
0 点
积分
141 点
种子
0 点
注册时间
2003-12-7
最后登录
2010-2-11
发表于 2004-12-16 04:32  ·  美国 | 显示全部楼层
.....看的有点晕...楼上的干这行的?

骑士

Teresa女神亲卫队NO.8

精华
0
帖子
1966
威望
1 点
积分
2146 点
种子
5 点
注册时间
2004-3-11
最后登录
2018-4-28
发表于 2004-12-16 10:10  ·  北京 | 显示全部楼层
什么渲染和是不是3d没有关系!!你别以为有什么共同点!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2025-1-30 23:01 , Processed in 0.263263 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部