hi,
does anyone know a workflow for computing ambient occlusion from point clouds? prman does this and i really prefer it over ray-tracing. anyone know how?
thanks,
Matthew
point cloud based ambient occlusion
6419 4 1- atabet
- Member
- 24 posts
- Joined: 7月 2005
- Offline
- atabet
- Member
- 24 posts
- Joined: 7月 2005
- Offline
- symek
- Member
- 1390 posts
- Joined: 7月 2005
- Offline
All you need is to generate PC in SOPs (look for SSS SOP or Scatter SOP), then you need your shader. The one already written for you is here:
http://forums.odforce.net/index.php?showtopic=2135 [forums.odforce.net]
This was a very first shader available in public which uses PC but I've just checked it in H9 and it still works although there could be better solution for now.
There is also a Point Cloud Presentation stuff showing many possible utilizations of such here on Exchange:
http://www.sidefx.com/index.php?option=com_wrapper&Itemid=155 [sidefx.com]
good luck!
sy.
http://forums.odforce.net/index.php?showtopic=2135 [forums.odforce.net]
This was a very first shader available in public which uses PC but I've just checked it in H9 and it still works although there could be better solution for now.
There is also a Point Cloud Presentation stuff showing many possible utilizations of such here on Exchange:
http://www.sidefx.com/index.php?option=com_wrapper&Itemid=155 [sidefx.com]
good luck!
sy.
- atabet
- Member
- 24 posts
- Joined: 7月 2005
- Offline
hi,
thanks for the links!
after checking out the code, it seems like these solutions use pt clouds to cache the results (thus increasing performance) but still require raytracing to calculate the occlusion.
am i misreading this statement?
while (pcunshaded(handle, “irrad”))
{
pcimport(handle, “P”, mp); mp = ow_space(mp);
pcimport(handle, “N”, mn); mn = normalize(ow_nspace(mn));
if (fullirradiance)
{
cl = irradiance(mp, mn, “samples”, samples, “bias”, raybias,
“background”, background);
}
else
{
cl = occlusion(mp, mn, “samples”, samples, “bias”, raybias,
“background”, background);
}
xxx = pcexport(handle, “irrad”, cl);
}
It seems that the occlusion call still uses raytracing, and just stores the results into the irradiance point cloud.
I was wondering if there was a solution which did the following:
* sampled points within a cone
* used ptarea to determine the percentage of the cone each point covered
* based occlusion from that
anyhow, im going to try it out
cheers,
matthew
thanks for the links!
after checking out the code, it seems like these solutions use pt clouds to cache the results (thus increasing performance) but still require raytracing to calculate the occlusion.
am i misreading this statement?
while (pcunshaded(handle, “irrad”))
{
pcimport(handle, “P”, mp); mp = ow_space(mp);
pcimport(handle, “N”, mn); mn = normalize(ow_nspace(mn));
if (fullirradiance)
{
cl = irradiance(mp, mn, “samples”, samples, “bias”, raybias,
“background”, background);
}
else
{
cl = occlusion(mp, mn, “samples”, samples, “bias”, raybias,
“background”, background);
}
xxx = pcexport(handle, “irrad”, cl);
}
It seems that the occlusion call still uses raytracing, and just stores the results into the irradiance point cloud.
I was wondering if there was a solution which did the following:
* sampled points within a cone
* used ptarea to determine the percentage of the cone each point covered
* based occlusion from that
anyhow, im going to try it out
cheers,
matthew
- hoknamahn
- Member
- 398 posts
- Joined: 7月 2005
- Offline
-
- Quick Links