|
|
In article <3adbb604$1@news.povray.org> , "David C. Jones"
<dav### [at] nightswimmingcom> wrote:
The group povray.programming is for discussing the source code of
POV-Ray, not the scene description language. There is an article in
p.announce.f-a-q group entitled, "Welcome To the POV-Ray News Groups".
This article explains where to post questions in the most relevant
groups. Follow-ups to povray.newusers please.
> So, I spent all day today trying to build a cartoon head for a personal
> project and I got to where I had to do the mouth. One idea was to use a
> difference command and whack out cavity for the mouth and I ended up with a
> rather odd render. Right in the center of the render is black dot that
> seemingly comes from nowhere. Two odd things of note:
>
> 1) If I union the sphere instead of difference it, the black dot goes away
> 2) If I change the camera location or rotate the object, the black dot
> appears on the same location in the render (as opposed to moving in
> conjuction with the camera or the rotation).
>
> Both of these lead me to believe that the artifact is a rendering error and
> not a free object. To see the pictures, go to
> http://www.nightswimming.com/davy/pov. The code is listed below and the
> relevant difference/union command is the very last one at the end of the
> file, but I wouldn't actually render it unless you have a lot of patience.
> Rendering the union takes 11 seconds but rendering the difference takes 15
> minutes (both on a PIII-700 machine). I've decided to take a different
> approach on the mouth, but I was wondering if anybody knew about this.
>
> Davy
>
> #macro SphToRec (rho, theta, phi) rho*<sin(phi)*cos(theta),
> sin(phi)*sin(theta), cos(phi)> #end
> #macro PlrToRec (rho, theta, zed) <rho*cos(theta),zed,rho*sin(theta)> #end
>
> #include "colors.inc"
>
> background{ SkyBlue }
>
> #declare Cam_Rot = -90;
>
> camera {
> location <5 10, -13>
> look_at <0, 10, 10>
> }
>
> light_source { <1000, 1000, -1000> 0.4*<1,1,1> }
> light_source { <-1000, 1000, -1000> 0.4*<1,1,1> }
> light_source { <0, .1, -1000> 0.9*<1,1,1> }
>
>
>
> plane {
> y, 0
> texture {
> pigment {
> checker
> color Blue
> color Green*1.03
> } scale <5,1,5>
> }
> }
>
> #declare HeadNoMouth = object {
> union { // head without mouth
>
> blob
>
>
> threshold .1
>
> sphere { // head
> <0, 10, 0> 5 .9
> texture { pigment { Flesh } }
> }
>
> sphere { // mouth-jaw
> <0, 0, 0> 1 .9
> scale <6.25,3.5,5>
> translate <0,8.1,0>
> texture { pigment { Flesh } }
> }
>
> sphere { // right eye
> <0,0,0> 1 .9
> scale <.85,1.25,.33>
> rotate <7.5,0,0>
> translate <.45,11,-4>
> texture { pigment { White*1.25 }}
> }
>
> sphere { // left eye
> <0,0,0> 1 .9
> scale <.85,1.25,.33>
> rotate <7.5,0,0>
> translate <-.45,11,-4>
> texture { pigment { White*1.25 }}
> }
>
> sphere { // right pupil
> <0,0,0> .25 .9
> translate <.45,10.25,-4.25>
> texture { pigment { Black }}
> }
>
> sphere { // left pupil
> <0,0,0> .25 .9
> translate <-.45,10.25,-4.25>
> texture { pigment { Black*1.5 }}
> }
>
> sphere { // nose
> <0,9,-4> .5 .9
> scale <1,1,1.05>
> texture { pigment { Flesh } }
> }
>
> } // head pieces
>
> sphere { // yellow hair
> <0,10.,.99> 4.8
> texture {
> pigment { Yellow transmit .65}
> }
> } // yellow hair
>
> #declare hairphi=0;
> #while (hairphi<pi/1.25)
> #declare hairtheta=2*pi;
> #while (hairtheta>0)
> cone {
> SphToRec(4 ,hairtheta,hairphi-
> (pi/100)*sin(5*abs(hairphi-pi)*abs(hairtheta-pi))) , .33
> SphToRec(4.87,hairtheta,hairphi-
> (pi/100)*sin(5*abs(hairphi-pi)*abs(hairtheta-pi))) , .05
> texture { pigment { Yellow/10 }}
> rotate <0,0,-90>
> translate <0,10,1>
> }
> #declare hairtheta=hairtheta-pi/25 +
> (pi/75)*cos(abs(hairphi-pi)*abs(hairtheta-pi));
> #end
> #declare hairphi=hairphi+pi/45 ;
> #end
>
> object { // left ear
> union
>
> difference {
> sphere { <0,0,0> 1 }
> sphere { <0,0,0> .6 }
> box {
> <2,2,0>
> <-2,-2,-2>}
> } // difference
> torus { 0.8 0.2 rotate <90,0,0>}
> } // union
> texture { pigment { Flesh } }
>
> scale <.9,1.25,.75>
> translate <5.,10,-1>
>
> } // left ear
>
> object { // right ear
> union
>
> difference {
> sphere { <0,0,0> 1 }
> sphere { <0,0,0> .6 }
> box {
> <2,2,0>
> <-2,-2,-2>}
> } // difference
> torus { 0.8 0.2 rotate <90,0,0>}
> } // union
> texture { pigment { Flesh } }
>
> scale <.9,1.25,.75>
> translate <-5,10,-1>
>
> } // object right ear
>
> } // head without mouth
>
> } // HeadNoMouth
>
> // If this union is changed to a difference, the artifact appears. The fact
> that HeadNoMouth
> // is made a separate object is irrelevant. I built the same object without
> the declare and the artifact still appears.
>
> union
>
> object { HeadNoMouth }
> sphere {
> <0,0,0> 1
> scale <3/4,1/3,1/2>
> rotate <0,-25,0>
> translate <2,8,-3.5>
> texture { pigment { Red } }
> }
> // rotate <0,25,0>
> } // difference
____________________________________________________
Thorsten Froehlich
e-mail: mac### [at] povrayorg
I am a member of the POV-Ray Team.
Visit POV-Ray on the web: http://mac.povray.org
Post a reply to this message
|
|