|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Here is the pov code which is pretty simle:
global_settings { assumed_gamma 2.2 }
camera {
location <0,0,10>
direction <0.0, 0.0, 1.5>
up <0.0, 1.0, 0>
right <-1, 0.0, 0>
look_at <0, 0, 0>
}
object {
light_source {
<0,0,10>
color red 1 green 1 blue 1
}
rotate -40*x
}
object{
union{
#include "toutatis.inc"
}
rotate <-90,0,0>
texture {
pigment {color rgb <1,0.9,0.8>}
finish {specular 0.2 roughness 0.4 ambient 0.0}
normal{wrinkles 0.2 scale 0.1 }
}
rotate< 0, 30 ,0 >
}
And the code in "toutatis.inc" consists thousands of smooth triangles like this:
........
smooth_triangle {
<-0.335299,0.862002,-0.125620>, <-0.044123,0.968563,0.244823>,
<-0.367860,0.871280,-0.165495>, <-0.114765,0.953897,0.277325>,
<-0.353680,0.852539,-0.087856>, <-0.054713,0.972332,0.227105> }
smooth_triangle {
<-1.088397,0.161391,-0.503175>, <-0.981229,-0.054861,-0.184877>,
<-1.066395,0.159457,-0.600327>, <-0.968122,-0.088312,-0.234393>,
<-1.069069,0.079726,-0.559682>, <-0.982928,-0.037642,-0.180097> }
smooth_triangle {
<-0.733415,-0.649272,-0.710871>, <-0.754510,-0.650190,0.089262>,
<-0.696555,-0.687316,-0.702565>, <-0.634403,-0.764153,0.116632>,
<-0.731962,-0.635080,-0.638776>, <-0.722088,-0.672899,0.160609> }
........
I want to filter the triangle or the points that cannot be seen from the result
image, to get a set of point that is needed for the later job.
one possible way that i can imagine is that
do the mathmatics, draw lines from the lightsource to the edge of the object and
compute the points that are under the light,
but it is too complex for me
is there any other possible ways for this question?
thank you !
Post a reply to this message
|
|
| |
| |
|
|
From: Alain
Subject: Re: How to filter the points that cannot be seen from the result image?
Date: 19 Jun 2013 15:57:37
Message: <51c20d31@news.povray.org>
|
|
|
| |
| |
|
|
> Here is the pov code which is pretty simle:
>
> global_settings { assumed_gamma 2.2 }
>
> camera {
> location <0,0,10>
> direction <0.0, 0.0, 1.5>
> up <0.0, 1.0, 0>
> right <-1, 0.0, 0>
> look_at <0, 0, 0>
> }
>
>
> object {
> light_source {
> <0,0,10>
> color red 1 green 1 blue 1
> }
> rotate -40*x
> }
>
> object{
> union{
> #include "toutatis.inc"
>
> }
> rotate <-90,0,0>
> texture {
> pigment {color rgb <1,0.9,0.8>}
> finish {specular 0.2 roughness 0.4 ambient 0.0}
> normal{wrinkles 0.2 scale 0.1 }
> }
>
> rotate< 0, 30 ,0 >
>
> }
>
>
> And the code in "toutatis.inc" consists thousands of smooth triangles like this:
>
> ........
> smooth_triangle {
> <-0.335299,0.862002,-0.125620>, <-0.044123,0.968563,0.244823>,
> <-0.367860,0.871280,-0.165495>, <-0.114765,0.953897,0.277325>,
> <-0.353680,0.852539,-0.087856>, <-0.054713,0.972332,0.227105> }
> smooth_triangle {
> <-1.088397,0.161391,-0.503175>, <-0.981229,-0.054861,-0.184877>,
> <-1.066395,0.159457,-0.600327>, <-0.968122,-0.088312,-0.234393>,
> <-1.069069,0.079726,-0.559682>, <-0.982928,-0.037642,-0.180097> }
> smooth_triangle {
> <-0.733415,-0.649272,-0.710871>, <-0.754510,-0.650190,0.089262>,
> <-0.696555,-0.687316,-0.702565>, <-0.634403,-0.764153,0.116632>,
> <-0.731962,-0.635080,-0.638776>, <-0.722088,-0.672899,0.160609> }
> ........
>
> I want to filter the triangle or the points that cannot be seen from the result
> image, to get a set of point that is needed for the later job.
>
> one possible way that i can imagine is that
> do the mathmatics, draw lines from the lightsource to the edge of the object and
> compute the points that are under the light,
> but it is too complex for me
>
> is there any other possible ways for this question?
> thank you !
>
>
>
The origin of your test should be the camera, not the light source. In
this case, they are the same, but it's not always the case.
Next, what points do you realy want to remove?
Those that are outside the feild of view, or those that are masked from
view by intervening surfaces?
For the first case, make a pyramid with it's summit at the camera's
location with a base having the same proportions as the field of view
and sized to match the actual field of view and large enough to contain
the object. Next, perform insideness tests on your points. Any point
outside that pyramid are out of view.
For the second case, you may use the trace function starting from the
camera location toward the object.
You'll need to use some trigonometry to compute the trace direction. If
the trace return the coordinates of the tested point, the point is
visible. If the returned coordinates are different, it mean that it
encountered some other surface before reatching the tested point.
If you use an orthographic camera, you always use the same trace
direction and change the trace origin X and Y location to match the X
and Y coordinates ot the tested points.
Alain
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Alain <kua### [at] videotronca> wrote:
> > Here is the pov code which is pretty simle:
> >
> > global_settings { assumed_gamma 2.2 }
> >
> > camera {
> > location <0,0,10>
> > direction <0.0, 0.0, 1.5>
> > up <0.0, 1.0, 0>
> > right <-1, 0.0, 0>
> > look_at <0, 0, 0>
> > }
> >
> >
> > object {
> > light_source {
> > <0,0,10>
> > color red 1 green 1 blue 1
> > }
> > rotate -40*x
> > }
> >
> > object{
> > union{
> > #include "toutatis.inc"
> >
> > }
> > rotate <-90,0,0>
> > texture {
> > pigment {color rgb <1,0.9,0.8>}
> > finish {specular 0.2 roughness 0.4 ambient 0.0}
> > normal{wrinkles 0.2 scale 0.1 }
> > }
> >
> > rotate< 0, 30 ,0 >
> >
> > }
> >
> >
> > And the code in "toutatis.inc" consists thousands of smooth triangles like this:
> >
> > ........
> > smooth_triangle {
> > <-0.335299,0.862002,-0.125620>, <-0.044123,0.968563,0.244823>,
> > <-0.367860,0.871280,-0.165495>, <-0.114765,0.953897,0.277325>,
> > <-0.353680,0.852539,-0.087856>, <-0.054713,0.972332,0.227105> }
> > smooth_triangle {
> > <-1.088397,0.161391,-0.503175>, <-0.981229,-0.054861,-0.184877>,
> > <-1.066395,0.159457,-0.600327>, <-0.968122,-0.088312,-0.234393>,
> > <-1.069069,0.079726,-0.559682>, <-0.982928,-0.037642,-0.180097> }
> > smooth_triangle {
> > <-0.733415,-0.649272,-0.710871>, <-0.754510,-0.650190,0.089262>,
> > <-0.696555,-0.687316,-0.702565>, <-0.634403,-0.764153,0.116632>,
> > <-0.731962,-0.635080,-0.638776>, <-0.722088,-0.672899,0.160609> }
> > ........
> >
> > I want to filter the triangle or the points that cannot be seen from the result
> > image, to get a set of point that is needed for the later job.
> >
> > one possible way that i can imagine is that
> > do the mathmatics, draw lines from the lightsource to the edge of the object and
> > compute the points that are under the light,
> > but it is too complex for me
> >
> > is there any other possible ways for this question?
> > thank you !
> >
> >
> >
>
> The origin of your test should be the camera, not the light source. In
> this case, they are the same, but it's not always the case.
>
> Next, what points do you realy want to remove?
> Those that are outside the feild of view, or those that are masked from
> view by intervening surfaces?
>
> For the first case, make a pyramid with it's summit at the camera's
> location with a base having the same proportions as the field of view
> and sized to match the actual field of view and large enough to contain
> the object. Next, perform insideness tests on your points. Any point
> outside that pyramid are out of view.
>
> For the second case, you may use the trace function starting from the
> camera location toward the object.
> You'll need to use some trigonometry to compute the trace direction. If
> the trace return the coordinates of the tested point, the point is
> visible. If the returned coordinates are different, it mean that it
> encountered some other surface before reatching the tested point.
>
> If you use an orthographic camera, you always use the same trace
> direction and change the trace origin X and Y location to match the X
> and Y coordinates ot the tested points.
>
>
>
> Alain
Thanks a lot Alain. Sorry for my ChEnglish, hard to read.
I think what I mean is to remove the points those that are masked from
view by intervening surfaces.
Actually, the purpose for the need is to obtain an index file, which achieve a
mapping between the 2D coordinate of the result image and the 3D coordinate.
The points that cannot be seen from the image is given up, only the visible
points are in the index file.
I am wondering how to get this file, I think there's a moment before get the
result image when I can get the map, and to get the index file, but how to do
this?
So sorry for my poor know-how, and thanks again!
Simon
Post a reply to this message
|
|
| |
| |
|
|
From: clipka
Subject: Re: How to filter the points that cannot be seen from the result image?
Date: 15 Jul 2013 19:49:55
Message: <51e48aa3@news.povray.org>
|
|
|
| |
| |
|
|
Am 20.06.2013 04:55, schrieb 355890577:
> Actually, the purpose for the need is to obtain an index file, which achieve a
> mapping between the 2D coordinate of the result image and the 3D coordinate.
> The points that cannot be seen from the image is given up, only the visible
> points are in the index file.
> I am wondering how to get this file, I think there's a moment before get the
> result image when I can get the map, and to get the index file, but how to do
> this?
Maybe you could get something going with a mesh camera and a single
light source placed at the camera location. Can't help you with the
details though, as I've never toyed around with mesh cameras myself.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|