zoukankan      html  css  js  c++  java
  • ptc ao image pipline

    Point Cloud Creation

    Converting a scene into a point cloud representation is a straightforward task but care must be taken to ensure the correctness and the optimality of the operation. One should start by disabling all the culling operations to ensure that backfacing and hidden surfaces are not rejected by the renderer prior to shading: 

    常见ptc很简单,但是需要注意的是首先要关掉所有物体的culling operation  即让场景中的所有物体都参与转换 

    Attribute "cull" "backfacing [0] 
    Attribute "cull" "hidden" [0] 

    Additionally, one should use a dicing method that is independent from the camera view to have correct sampling of points on objects' silhouettes:

    设置物体独立的dicing 使物体正确采样 

    Attribute "dice" "rasterorient" [0]

     Since the quality of the image is not important during this first pass, one can lower the filter size for fast rendering

    正确设置图片的filter ,因为ptc pass中图片质量可以忽略所以可以最大限度的降低图片质量 

    PixelSamples 1 1 
    PixelFilter "box" 1 1 


    Since no shading is performed during this pass, all surface shaders can be removed from the scene(54) and replaced by a shader that converts micro-polygons to points. The general structure of such a shader is given below:

    使用bake ptc 材质替换覆盖场景中的所有材质 ;一个简单的bake ptc的材质:

    /* A simple surface shader to write out the micro-polygons into a
    point cloud file. */
    surface ptc_write(
    string ptc_file = "default.ptc";
    string ptc_coordsys = "world"; )
    {
    bake3d( ptc_file, "", P, N,
    "coordsystem", ptc_coordsys,
    "interpolate", 1 );
    Ci = Cs;
    }

    关于上述材质:

     1.bake3d() saves the points as disks, and not dimensionless points. This is performed by taking the area of each micro-polygon using surface derivatives. If needed, it is possible to manually specify the area of a micro-polygon tobake3d():

       bake3d() 是将points 存成disks 而不是无方向的points。如果需要可以手动指定特定的区域转换:

      ...

        float A = area( P, "dicing" );
        bake3d( ptc_file, "", P, N,
            "coordsystem", ptc_coordsys,
            "_area", A,
            "interpolate", 1 );
        ... 

    It is suggested not to specify the `_area' channel if it is equal to area(P, "dicing") (see area shadeop) since this will increase the size of the point cloud file unnecessarily (3Delight already stores that area in the point cloud file).看不懂 

     2.The `interpolate' parameter passed to bake3d() is important: since we wish to convert micro-polygons to points, we are interested in micro-polygons' centers and not corners (see bake3d shadeop). Omitting this parameter may lead to unexpected results in the point-based occlusion algorithm. 'interpolate' 参数很重要,因为我们想要的是mico-polygons变成point, 我们要的是micro polygon的中心点center 而不是corners..

    忽略这一参数回使ptc occ算法变得不正确 

    3.The normal passed to bake3d() is not a faceforward() version of the normal. This is important since we need the original surface normal and not an altered one. This also implies that scene geometry should be consistantly oriented in order to get correct results.

    传递的normal信息应该是原始的nomral信息而不是加工过的faceforward() version 版本 

     If one is to compute point-based color bleeding effects, an additional `_radiosity' channel should be stored in the point cloud file:

     如果需要计算给予ptc的color bleeding效果,需要在ptc文件中增加‘-radiosity通道:

     ...
        color rad = compute_surface_radiance();
        bake3d( ptc_file, "", P, N,
            "coordsystem", ptc_coordsys,
            "_radiosity", rad,
            "interpolate", 1 );
        ...

    Note that point-cloud creation should be very rapid, so there is no real problem when rendering animated sequences since a point-cloud can be created for each frame (as apposed to baking where it is a good thing to re-use baked data for many frames). baking Ptc通道应该很快,所以算然序列也什么问题。

    Point Cloud Use

    ... 

  • 相关阅读:
    逆元(费马小定理求法)
    CodeForces
    lower_bound and upper_bound
    HDU 4825 Xor Sum
    1030: [JSOI2007]文本生成器
    1070: [SCOI2007]修车
    agc 027 B
    P2664 树上游戏
    CF 314 E. Sereja and Squares
    4237: 稻草人
  • 原文地址:https://www.cnblogs.com/rdRoad/p/1594854.html
Copyright © 2011-2022 走看看