• SunFlow场景文件的Object代码块


    网格:

    • 三角形网格 (Triangle Meshes)
      1. 句法:
        点(Point)等同于节点(Vertex)
        object { 
        shader default
        type generic-mesh
        name meshName
        points X
        x y z

        triangles X
        A B C /* 顶点索引,从0开始 */

        normals none/vertex/facevarying
        uvs none/vertex/facevarying
        }
        对于法线和UVS,如果使用vertex类型,网格的每个点都需要自己的法线或UV坐标,如:
        ...
        points 3
        x1 y1 z1
        x2 y2 z2
        x3 y3 z3
        triangles 1
        0 1 2
        normals vertex
        d1 e1 f1
        d2 e2 f2
        d3 e3 f3
        uvs vertex
        u1 v1
        u2 v2
        u3 v3
        }
        对于facevarying类型,要使用如下的格式:
        ...
        points 3
        x1 y1 z1
        x2 y2 z2
        x3 y3 z3
        triangles 1
        0 1 2
        normals facevarying
        d1 e1 f1 d2 e2 f2 d3 e3 f3
        uvs facevarying
        u1 v1 u2 v2 u3 v3
        }
      2. 变换:
        是否需要围绕特定的法线旋转一个对象?可以在 shader / modifier 后面调用如下的句法:
        transform {
        rotate x y z d /* {x,y,z}是法线坐标,d是旋转角度 */
        }
        可以使用变换矩阵进行变换,如:
        object {
        shader default
        transform col my4x4MatrixReadByColumn
        type generic-mesh
      3. 面阴影/修改器:(Face Shaders/Modifiers)
        如果要对同一个网格对象的不同的面附加多个阴影或修改器,如下:
        object { 
        shaders 2
        shaderName0
        shaderName1
        modifiers 2
        bumpName0
        "None"
        type generic-mesh
        name meshName
        points 6
        x1 y1 z1
        x2 y2 z2
        x3 y3 z3
        x4 y4 z4
        x5 y5 z5
        x6 y6 z6
        triangles 2
        0 1 2
        1 2 3
        normals none
        uvs facevarying
        u1 v1 u2 v2 u3 v3
        u4 v4 u5 v5 u6 v6
        face_shaders
        0
        1
        }
        在 face_shaders节,把阴影0(即阴影列表中的第一个阴影 -- shaderName0)赋给三角形列表中的第一个三角形,阴影1赋给第二个三角形,等等。
        对于修改器来说是通理的,但对于具备纹理的修改器来说(bump/normal map),需要同时附加uvs坐标,另外,如果一个面没有修改器,只要在列表中使用"None"就可以了。
      4. Object Motion Blur 运动模糊效果,略
      5. Bezier Patches 略

    • Quad Meshes  略。

  • 相关阅读:
    路飞学城Python-Day19
    路飞学城Python-Day18
    路飞学城Python-Day17
    ES6新特性概览
    关于Flex,有12个属性很重要
    Web前端工程师成长之路——知识汇总
    解决ajax跨域请求 (总结)
    项目中关于AJAX的使用总结
    Web前端性能优化——如何提高页面加载速度
    Canvas和SVG的区别
  • 原文地址:https://www.cnblogs.com/xiaotaoliang/p/1389608.html
Copyright © 2020-2023  润新知