Announcement

Collapse
No announcement yet.

vrayproxy point cloud issue

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • vrayproxy point cloud issue

    max 2011 x64, latest vray.

    im starting a project where i literally need to render 100's of sq km of landscape in a flyover. im at the stage of testing options, and am looking at the limits of how much i can render in one go, before i have to start splitting the file and comping.


    decided to look at using the proxy point cloud system in combination with forestpack.

    however when i enable point clouds for a reasonable density tree at real scale, it renders as a set of great big discs, even when close to the camera. i can adjust the render multiplier to get it to render like normal, but the jump from mesh to point cloud, even when distant, is very jarring. the discs are just too big.

    i try changing the point cloud export size, but changing from 2 down to 1 didnt make enough of a difference, changing from 1 to .5 made no apparent difference (even the proxy file is the same size on disc, and renders identically to cloud size 1. )

    if i try to do a smaller point cloud size ( tried 0.3 and 0.2) max just locks up completely, and the proxy file stays at 1kb on the hard drive.

    any suggestions? the point cloud thing sounds great, but im having a hard time getting it to work.


    interface wise, it would be great if you could have a min and max distance setting so you can directly set at what distance the LOD change. also the ability to change the point (disc) size without re-exporting the proxy would be nice!

  • #2
    Can you send me the mesh that you are trying to convert to vlado@chaosgroup.com so that I can take a look?

    Best regards,
    Vlado
    I only act like I know everything, Rogers.

    Comment


    • #3
      This issue has been reported to us by other users, and it seems a Forest Pack problem. By some reason the proxies render fine as stand-alone objects, but fail in Forest.

      I think the dots are wrong scaled, but i can't find any method in the MeshFile class to handle it. Any suggestion, Vlado ? (please reply me by e-mail to support@itoosoft.com if the question is off-topic here).

      Thanks,
      Last edited by Itoosoft; 30-07-2011, 08:18 AM.
      Carlos Quintero
      iToo Software
      www.itoosoft.com

      Comment


      • #4
        to be honest, i did get strange rendering results with forest and the point clouds, but assumed it was down to the point cloud settings, so started trying to get a good result with one tree ( no forestpack) and the problems mentioned above were with a single tree mesh, not a forest.

        ive sent the raw tree mesh to vlado, so lets see what comes of that. then ill start finding out about any forestpack related issues

        basically the point cloud idea is great, but a few more controls to get the look right would be a big boost to usability.

        off the top of my head:

        disc/ point size multiplier ( on the proxy modifier panel, not on export)

        distance settings (in scene units) for the full res mesh, and the various levels of point cloud detail. (are there a number of discrete levels of detail, or is it continuously adaptive?)



        this would mean i could easily set it so the full mesh was used until beyond the point where any change in lod is visible, and from there rapidly reduce lod until single discs were used when a tree is smaller than a pixel.
        Last edited by super gnu; 31-07-2011, 11:39 AM.

        Comment


        • #5
          Originally posted by super gnu View Post
          disc/ point size multiplier ( on the proxy modifier panel, not on export)
          There is one already (the "level multiplier").It also controls the distance to switch from regular mesh to point clouds.

          For your mesh specifically, the default point size of 2.0 is way too large, but like you mentioned, lower values takes a very long time to process - I'm looking into this now.

          Best regards,
          Vlado
          Last edited by vlado; 31-07-2011, 11:17 PM.
          I only act like I know everything, Rogers.

          Comment


          • #6
            any news on this issue? ill need to start demonstrating some very big scenes to my client in the next couple of days!

            Comment


            • #7
              Well, I did find the problem and we are looking for a solution, but in any case you might want to start looking at ways to split the scene.

              Best regards,
              Vlado
              I only act like I know everything, Rogers.

              Comment


              • #8
                Originally posted by Itoosoft View Post
                I think the dots are wrong scaled, but i can't find any method in the MeshFile class to handle it. Any suggestion, Vlado ? (please reply me by e-mail to support@itoosoft.com if the question is off-topic here).

                Thanks,
                In the V-Ray 2.0 SDK, there is an additional callback that you can pass to StaticMeshInterfacePrimitive::initEx() which is used to determine the detail level to use. It's implementation could be something like this:
                Code:
                class GetContextDataCallback: public VUtils::GetContextDataCallbackBase
                {	
                	const VR::VRayFrameData *fdata;
                	VR::TraceTransform matObjToWorld;
                	float	rayAreaMultiplier;
                public:
                
                	GetContextDataCallback():fdataInitialized(false), transformInitialized(false), rayAreaMultiplier(1.0f){}
                	//GetContextDataCallback(const VR::VRayFrameData &_fdata):fdata(_fdata){};
                	bool fdataInitialized;
                	bool transformInitialized;
                
                	void setRayAreaMultiplier(const float rayAreaMult)
                	{
                		rayAreaMultiplier = rayAreaMult;
                	}
                	void InitFrameData(const VR::VRayFrameData &fdata)
                	{
                		this->fdata = &fdata;
                		fdataInitialized = true;
                	}
                
                	void setTMatrix(const VR::TraceTransform &ObjToWorld)
                	{
                		matObjToWorld = ObjToWorld;
                		transformInitialized = true;
                	}
                
                	float getArea(const Vlado::RSRay &ray, float dist)
                	{
                		VR::VRayContext *rc = (VR::VRayContext*)&ray;		
                		Vlado::Vector ddx = rc->rayparams.dPdx + rc->rayparams.dDdx*dist;
                		Vlado::Vector ddy = rc->rayparams.dPdy + rc->rayparams.dDdy*dist;
                
                		Vlado::Vector vecDeriv;
                		CROSS(ddx, ddy, vecDeriv);
                		return vecDeriv.length();
                	}
                
                	float getRayArea(const Vlado::Vector &p)
                	{
                		if(fdataInitialized && transformInitialized)
                		{
                			float dist = (fdata->camToWorld.offs - matObjToWorld*p).length();
                			float xw = dist*tan(fdata->fov*0.5f)*2.0f/fdata->imgWidth;
                			return rayAreaMultiplier*rayAreaMultiplier*xw*xw;
                		}
                		return -1.0f;
                	}
                };
                Best regards,
                Vlado
                Last edited by vlado; 02-08-2011, 10:28 AM.
                I only act like I know everything, Rogers.

                Comment


                • #9
                  Originally posted by vlado View Post
                  In the V-Ray 2.0 SDK, there is an additional callback that you can pass to StaticMeshInterfacePrimitive::initEx() which is used to determine the detail level to use. It's implementation could be something like this:
                  Great ! I will start working on it.

                  Thanks Vlado,
                  Carlos Quintero
                  iToo Software
                  www.itoosoft.com

                  Comment


                  • #10
                    Originally posted by super gnu View Post
                    im starting a project where i literally need to render 100's of sq km of landscape in a flyover. im at the stage of testing options, and am looking at the limits of how much i can render in one go, before i have to start splitting the file and comping.

                    decided to look at using the proxy point cloud system in combination with forestpack.
                    I have not tested the proxy point cloud too much, because the problems described above. But, are you sure that is it required for your scene ?

                    I just rendered a stress test using standard meshes. There are roughly 3.5 millions of trees in the camera's frustrum, GI is enabled, it uses tint map, all the models are high-poly, and i get render times before 5 min. I'm not sure if the point cloud may help here, but i think that you can render huge scenes without it.
                    Attached Files
                    Carlos Quintero
                    iToo Software
                    www.itoosoft.com

                    Comment


                    • #11
                      thanks for the demonstration of the reason i purchased forestpro to be honest ive just started testing (i only purchased 2 days ago) and still need to get to grips with it, particularly getting the trees to properly pick up the colour of the ground beneath. - an option to tint the tree with an average of the colour below would be great. or maybe you can already do this.. ive tried the workflow i think should work, but the tees never come close to the same colour of the ground below, even with the tint set to 100/100.

                      i noticed you are using standard meshes.. is that preferable / the same as using vray proxies? this conversation is a bit off topic maybe (should be in the forest forum) but im interested to hear any advice you have. also, what constitutes high poly for those trees? how much ram do you use? and with those 5 min rendertimes, did you have high enough aa to clear up the shimmering in the background? i usually end up using 1/100 dmc and controlling the grain with the noise threshold in scenes like this.. normally down to 0.002 if i can afford the rendertime.

                      on a related subject ive been wishing (and asked) for a mappable noise threshold, so you can feed in a zdepth render and get a low noise threshold in the distance where its needed on scenes like this, but higher in the foreground so your motion blur doesnt take forever. but alas there are a lot of people requesting features and fixes here these days! ( great for Chaos tho

                      Comment


                      • #12
                        To use the tint options, the material must use "Forest Color" in the slots that you want to tint (usually Diffuse). So, basically:

                        1) Replace the leaf texture with a "Forest Color" map, assigning the texture in the default map slot of Forest Color.
                        2) In Forest, set the tint range to any value greater to zero.
                        3) Assign the tint map in Forest->Material->Map (As Texture). The tint map is aligned with the mapping coordinates of the surface.

                        In Forest Color you can also override the tint map, assign random textures, apply the tint by element (see the docs for more info about this) and change the blending color mode. There is a recent discussion in our forum about this, including a sample scene: http://www.itoosoft.com/forum/index.php?topic=855.0

                        The proxies should be used only if the system is low in RAM, since they can be loaded/unloaded dinamically when needed. Usually standard meshes (included in the scene or as XRefs) render slightly faster if there is enough memory available. This test scene uses 5 models of HQ Plants (some thousands of polys each one), requiring 6 Gb.RAM to render on my machine (i7 980X, 12 Gb.RAM).

                        You are right that probably the AA values would be low for animation purposes (i used 1/4 DMC). My experience with animations is very limited (no time for testing ), so i'm not sure what should be the right values. I just renderer other test with 1/12 DMC and GI disabled to compare the result, the render time went up to 10 min.

                        As soon as the point cloud issues are solved, i will repeat the tests using it. This is an amazing field to investigate and improve new rendering techniques...
                        Attached Files
                        Carlos Quintero
                        iToo Software
                        www.itoosoft.com

                        Comment


                        • #13
                          Any news on this subject? We have just bought 2 lics of FPP and will be using it for very large forests/gold courses etc next week!

                          Mark

                          Comment


                          • #14
                            Originally posted by m_hinks View Post
                            Any news on this subject? We have just bought 2 lics of FPP and will be using it for very large forests/gold courses etc next week!

                            Mark
                            Forest 3.8 already supports points-cloud proxies, in case you need them.
                            Carlos Quintero
                            iToo Software
                            www.itoosoft.com

                            Comment


                            • #15
                              We are also currently working to improve rendering of point-cloud proxies (i.e. make them more memory efficient).

                              Best regards,
                              Vlado
                              I only act like I know everything, Rogers.

                              Comment

                              Working...
                              X