reverseNormals 操作

语法

  • reverseNormals()

描述

reverseNormals 操作用于反转当前形状几何的面法线。

注:

要检查面法线的方向,需要禁用“首选项/常规/语法核心”下的“使用双侧光照”选项。

相关内容

示例

注:

已禁用“双侧光照”的屏幕截图,法线指向远离照相机方向的面为黑色。

仅更改生成的几何,而不是范围。 您可以根据在示例中平移操作朝相同方向平移法线和反转几何证实这一点。

左侧框:index=0 未反转的面

Lot -->
   extrude(world.up,1)
   comp(f) {side : Facade}

Facade -->
   case comp.index = 0:
      color("#ff0000")
      # = red
      t(0,0,0.1)
   else:
      color("#00ff00")
      # = green
      t(0,0,0.1)

右侧框:index=0 已反转的面

Lot -->
   extrude(world.up,1)
   comp(f) {side : Facade}

Facade -->
   case comp.index = 0:
      color("#ff0000")
      # = red
      t(0,0,0.1)
	     reverseNormals
   else:
      color("#00ff00")
      # = green
      t(0,0,0.1)

左侧框中未应用 reverseNormal;右侧框中应用了 reverseNormal

高级知识:了解反转过程

法线:面的法线由折点顺序定义。 默认情况下,顺序为逆时针。

一些高级用户可能会注意到,完成 reverseNormals 命令后,折点顺序 [黑色] 不仅反转(与在法线反转 [蓝色] 的经典数学定义中一样),还会偏移值 1 [红色]。 这是因为 CityEngine 通常使用“第一条边”,由折点索引 0 和 1 定义。 因此,在 reverseNormals 命令中,会保留“第一条边”。边和折点顺序

  • 黑色:面的标准折点顺序(逆时针)
  • 蓝色:经典反转折点顺序
  • 红色:与在 CityEngine 中使用的相同的反转折点顺序,并且保留了第一条边。
注:

一些游戏引擎无法显示双侧几何,因此会仅显示法线指向照相机的面。 不会渲染其他面。 因此,针对游戏引擎进行建模时,一定要在编写 cga 代码时考虑这一情况。