⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 光与材质 (lights and materials).htm

📁 此文件是微软MSDN中d3d部分资料的翻译文件
💻 HTM
📖 第 1 页 / 共 5 页
字号:
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">聚光灯发出圆锥形的光,圆锥分为两部分:较亮的内锥和外锥。内锥中的光最亮,而外锥以外则没有光,在内外锥之间光强逐渐衰减。这种衰减一般被称为辐射。<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">一个顶点接收到的光的数量(译注:此后简称为光量)取决于顶点在内锥或外锥中的位置。<SPAN 
lang=EN-US>Microsoft&reg; 
Direct3D&reg;计算聚光灯的方向向量(<I>L</I>)和从顶点到聚光灯的向量(<I>D</I>)的点积。这个值等于两个向量夹角的余弦值,并作为顶点位置的一个指标,可与聚光灯的圆锥角度进行比较以确定顶点位于内锥或外锥的何处。下面提供了这两个向量之间关系的表示图。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><!--[if gte vml 1]><v:shape 
id=_x0000_i1070 style="WIDTH: 228pt; HEIGHT: 126.75pt" type = "#_x0000_t75" 
coordsize = "21600,21600"><v:imagedata o:title="spotalg1" src = 
"LnM_files/image004.gif"></v:imagedata></v:shape><![endif]--><![if !vml]><img border=0 width=304 height=169
src="LnM_files/image004.gif" v:shapes="_x0000_i1070"><![endif]><o:p></o:p></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">系统将这个值与聚光灯的内锥和外锥角度的余弦值进行比较。在聚光灯的<U><SPAN 
lang=EN-US>D3DLIGHT9</SPAN></U>结构中,<B><SPAN lang=EN-US>Theta</SPAN></B>和<B><SPAN 
lang=EN-US>Phi</SPAN></B>成员表示内锥和外锥的整个圆锥的角度。因为衰减和顶点与照明中心(亦即圆锥的中线)的夹角有关,所以在计算余弦值时<SPAN 
lang=EN-US>Direct3D会将这两个圆锥的角度除以二。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">如果向量<I><SPAN 
lang=EN-US>L</SPAN></I>和<I><SPAN 
lang=EN-US>D</SPAN></I>的点积小于等于外锥角度的余弦值,那么顶点位于外锥以外,不接收任何光。如果<I><SPAN 
lang=EN-US>L</SPAN></I>和<I><SPAN 
lang=EN-US>D</SPAN></I>的点积大于内锥角度的余弦值,那么顶点位于内锥里面,接收最多的光量,此时仍需考虑光随距离的衰减。如果顶点位于这两个区域之间的某处,那么<SPAN 
lang=EN-US>Direct3D使用以下公式计算顶点的辐射值。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><!--[if gte vml 1]><v:shape 
id=_x0000_i1071 style="WIDTH: 108pt; HEIGHT: 41.25pt" type = "#_x0000_t75" 
coordsize = "21600,21600"><v:imagedata o:title="falloff" src = 
"LnM_files/image005.gif"></v:imagedata></v:shape><![endif]--><![if !vml]><img border=0 width=144 height=55
src="LnM_files/image005.gif" v:shapes="_x0000_i1071"><![endif]><o:p></o:p></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">在这个公式中,<I><SPAN 
lang=EN-US>I</SPAN></I><SUB><SPAN 
lang=EN-US>f</SPAN></SUB>为辐射后的光强,对正在计算光照的顶点来说,<SPAN 
lang=EN-US>α为向量<I>L</I>和<I>D</I>之间的夹角,F为二分之一外锥角度的余弦值,φ为二分之一内锥角度,为聚光灯在<B>D3DLIGHT9</B>结构中的辐射属性<B>Falloff</B>。这个公式产生一个从0.0到1.0之间的值,用这个值对光强进行缩放就产生了辐射的效果。作为从顶点到聚光灯的距离的因子,衰减同时也被使用。<I>p</I>值对应<B>D3DLIGHT9</B>结构的<B>Falloff</B>成员,控制辐射曲线的形状。下图显示了不同的<B>Falloff</B>值如何作用于辐射曲线。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><!--[if gte vml 1]><v:shape 
id=_x0000_i1072 style="WIDTH: 255pt; HEIGHT: 188.25pt" type = "#_x0000_t75" 
coordsize = "21600,21600"><v:imagedata o:title="fallgraf" src = 
"LnM_files/image006.gif"></v:imagedata></v:shape><![endif]--><![if !vml]><img border=0 width=340 height=251
src="LnM_files/image006.gif" v:shapes="_x0000_i1072"><![endif]><o:p></o:p></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">在实际光照中,不同的<B><SPAN 
lang=EN-US>Falloff</SPAN></B>值产生的效果是很敏感的,并且如果使用除了<SPAN 
lang=EN-US>1.0之外的值作为<B>Falloff</B>值描述辐射曲线,那么还会导致些许性能下降。为此,这个值一般被设为1.0。<o:p></o:p></SPAN></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1"><B><SPAN 
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt; mso-fareast-language: ZH-CN">光的颜色<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></B></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">Microsoft&reg; 
Direct3D&reg;中光源发出三种颜色,这三种颜色单独用于系统的光照计算:漫反射色、环境反射色、和镜面反射色。每种颜色在Direct3D光照模型的协助下,与当前材质中的对应部分相互作用,产生用于渲染的最终颜色。漫反射色与当前材质的漫反射系数属性相互作用,镜面反射色与材质的镜面反射反射系数属性相互作用,依次类推。有关Direct3D如何应用这些颜色的细节,请参阅<U>与光照相关的数学</U>。<o:p></o:p></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">在<SPAN 
lang=EN-US>C++应用程序中,<U>D3DLIGHT9</U>结构包含了三个与这些颜色——<B 
style="mso-bidi-font-weight: normal">漫反射色</B>、<B 
style="mso-bidi-font-weight: normal">环境反射色</B>、<B 
style="mso-bidi-font-weight: normal">和镜面反射色</B>——相对应的成员,每个成员都是一个<U>D3DCOLORVALUE</U>结构,定义了发出的颜色。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">对系统计算量影响最大的颜色类型是漫反射色。最常用的漫反射色是白色(<SPAN 
lang=EN-US>R:1.0 G:1.0 
B:1.0),但是应用程序可以根据需要创建其它颜色以达到想要的效果。例如,应用程序可以为火炉使用红光,或者为处于“通行”状态的红绿灯使用绿光。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">一般来说,应用程序将光的颜色成员设为从<SPAN 
lang=EN-US>0.0到1.0之间的值,闭区间,但这不是必需的。例如,应用程序可以将所有成员设为2.0,创建出一个“比白色更亮”的光源。当应用程序使用的衰减值不为常数时,这种设定尤其有用。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">注意,虽然<SPAN 
lang=EN-US>Direct3D使用RGBA值表示光的颜色,但是并没有使用颜色的阿尔法成员。更多信息,请参阅<U>光和材质和颜色值</U>。<o:p></o:p></SPAN></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1"><B><SPAN 
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt; mso-fareast-language: ZH-CN">有颜色的顶点(<SPAN 
lang=EN-US>Color Vertices)<o:p></o:p></SPAN></SPAN></B></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN 
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">通常用材质颜色进行光照计算。但是,应用程序可以指定用顶点的漫反射色或镜面反射色覆盖材质颜色——放射色(<SPAN 
lang=EN-US>emissive),环境反射色、漫反射色、和镜面反射色。这可以通过调用<U>IDirect3DDevice9::SetRenderState</U>方法并用下表所列的值设置设备的状态变量来完成。<o:p></o:p></SPAN></SPAN></P>
<TABLE class=MsoNormalTable style="mso-cellspacing: 1.5pt" cellPadding=0 
border=0>
  <TBODY>
  <TR style="mso-yfti-irow: 0">
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">设备状态变量<SPAN 
      lang=EN-US><o:p></o:p></SPAN></SPAN></B></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">含义<SPAN 
      lang=EN-US><o:p></o:p></SPAN></SPAN></B></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">类型<SPAN 
      lang=EN-US><o:p></o:p></SPAN></SPAN></B></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal style="TEXT-ALIGN: center" align=center><B><SPAN 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">默认值<SPAN 
      lang=EN-US><o:p></o:p></SPAN></SPAN></B></P></TD></TR>
  <TR style="mso-yfti-irow: 1">
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal><U><SPAN lang=EN-US 
      style="COLOR: blue; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">D3DRS_AMBIENTMATERIALSOURCE</SPAN></U><SPAN 
      lang=EN-US 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal><SPAN 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">定义从何处得到环境光的材质色。<SPAN 
      lang=EN-US><o:p></o:p></SPAN></SPAN></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal><SPAN lang=EN-US 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">D3DMATERIALCOLORSOURCE<o:p></o:p></SPAN></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal><SPAN lang=EN-US 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">D3DMCS_MATERIAL<o:p></o:p></SPAN></P></TD></TR>
  <TR style="mso-yfti-irow: 2">
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal><U><SPAN lang=EN-US 
      style="COLOR: blue; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">D3DRS_DIFFUSEMATERIALSOURCE</SPAN></U><SPAN 
      lang=EN-US 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal><SPAN 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">定义从何处得到漫反射材质色。<SPAN 
      lang=EN-US><o:p></o:p></SPAN></SPAN></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">
      <P class=MsoNormal><SPAN lang=EN-US 
      style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">D3DMATERIALCOLORSOURCE<o:p></o:p></SPAN></P></TD>
    <TD 
    style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -