• CityEngine建模示例教程6:Basic Shape Grammar之Part 3:给建筑物制作LOD


    LOD技术主要是根据距离建筑物对象的距离来调用不同复杂度的模型,即在较远距离时显示复杂度低的模型,在较近距离时显示复杂度高的模型。在CityEngine中为了提高显示效率,也可以使用LOD机制。本节我们就给建筑物模型添加一个简单的LOD机制。当我们要创建大范围的建筑物模型时,可以由此降低模型的复杂度(多边形的数量)。

    1. 1.        添加LOD属性

    attr LOD = 1

    在本示例中,只设置两个显示级别:

    LOD 0:代表较低级别,低复杂度

    LOD 1:代表较高级别,高复杂度

    因为模型制作中,我们做的模型已经是搞分辨率的模型,因此现在通过简单的步骤创建低分辨率模型。

    1. 2.        为模型设置LOD

    在目前的模型中,对于window类型的模型,之前是使用obj文件创建的一个较复杂的窗户,可以通过使用纹理平面代替obj这种复杂模型。需要添加红色部分的代码:

    Window -->

      case LOD > 0 :

      s('1,'1,0.4)

      t(0,0,-0.25)

      texture(randomWindowTexture)

      i(window_asset) 

      else :          

           texture(randomWindowTexture)

    当LOD大于0时,使用的是之前创建的高分辨率的窗户模型,否则,使用的是一个简单的平面。同样的,对Door和SolidWall对象也添加类似的代码。

    Door -->

      case LOD > 0 :

               s('1,'1,0.1)

               t(0,0,-0.5)

               texture(frontdoor_tex)

      else :

          texture(frontdoor_tex)

    SolidWall -->

      case LOD > 0 :

      color(wallColor)

      s('1,'1,0.4)

      t(0,0,-0.4)

      texture(wall_tex) 

      set(material.dirtmap, dirt_tex)

      i("builtin:cube:notex")  

      projectUV(0) projectUV(2)

    else :

          Wall

    应用这个规则之后,选择一个建筑物并查看其属性,会发现多了一个LOD属性。将LOD属性值改为0,属性表中的Source字段就从Rules改为Value。当再次应用规则时,将使用0值作为LOD的值应用在建筑物模型上。

    当LOD为0时,模型显示如下:

           

                   

    当LOD为1时,模型显示如下:

    显示模型时,按数字7键显示/隐藏模型上的黑线,按数字5键显示/隐藏纹理图片,按字母D键显示模型包含的面数。使用LOD之后,模型的面数从3699个面降低到了475个。

  • 相关阅读:
    最新Linux系统Ubuntu16.04搭建HUSTOJ(LAMP环境)
    deepin下codeblocks更改调试终端
    UVA
    POJ3436 ACM Computer Factory【EK算法】
    HDU4738 Caocao's Bridges【强连通】
    HDU4685 Prince and Princess【强连通】
    HDU4635 Strongly connected【强连通】
    POJ3177 Redundant Paths【双连通分量】
    HDU1233 还是畅通工程【最小生成树】
    3D正方体
  • 原文地址:https://www.cnblogs.com/esrichina/p/2658505.html
Copyright © 2020-2023  润新知