![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Bill Brehm
Subject: Placing a stopwatch in a fixed position on the image
Date: 26 Sep 2000 12:38:23
Message: <39d0d0ff@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
I want to place a stop watch type counter in the lower right corner of an
animation. I has the animation working and the stop watch text too. I have
some problems:
1) I can't figure out the formula for rotating a text object so it is
parallel to the image plane and upright as the camera sees it. I've tried
all kinds of vector functions, be can't figure it out.
2) Ideally, the rotation and position and size of the text object should be
based on camera parameters, like look_at and position and sky, etc., so I
can move the camera and have the stopwatch stay in the same location on the
images.
3) I want to do the stopwatch in such a way that it doesn't have any
perspective distortion. Ideally, it should look like it was superimposed on
the image after the rendering.
Any help is appreciated. Thanks, Bill.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Bill Brehm wrote:
>I want to place a stop watch type counter in the lower right corner of
>an animation. I has the animation working and the stop watch text too.
>I have some problems:
John VanSickle posted something that might be helpfull, have a look here:
Newsgroups: povray.general
Subject: Re: Automatic copyright text - need math help
Message-ID: <361FA0EC.9C210BC5@erols.kosher.com>
Date: Sat, 10 Oct 1998 13:01:16 -0500
Ingo
--
Photography: http://members.home.nl/ingoogni/
Pov-Ray : http://members.home.nl/seed7/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
In article <39d0d0ff@news.povray.org>, "Bill Brehm"
<bbr### [at] netzero net> wrote:
> I want to place a stop watch type counter in the lower right corner
> of an animation. I has the animation working and the stop watch text
> too. I have some problems:
In MegaPOV, this could be done with post_process filters and the object
pattern...use the multiply filter with a black and white pigment to
black out the area that will be covered by the watch, and then use the
add filter to overlay the image of the watch. Use the object pattern to
generate the watch image and the mask(though that won't work if you want
a rendered watch, in which case you might have to use image_maps and/or
a more complex sequence of filters).
--
Christopher James Huff
Personal: chr### [at] mac com, http://homepage.mac.com/chrishuff/
TAG: chr### [at] tag povray org, http://tag.povray.org/
<><
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: John VanSickle
Subject: Re: Placing a stopwatch in a fixed position on the image
Date: 27 Sep 2000 08:22:22
Message: <39D1E67D.A5F697DD@erols.com>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Bill Brehm wrote:
>
> I want to place a stop watch type counter in the lower right corner of
> an animation. I has the animation working and the stop watch text too.
> I have some problems:
>
> 1) I can't figure out the formula for rotating a text object so it is
> parallel to the image plane and upright as the camera sees it. I've
> tried all kinds of vector functions, be can't figure it out.
It's simpler to use a matrix transform. All but one of my IRTC entries
has subtitling of some kind, so I make heavy use of this.
> 2) Ideally, the rotation and position and size of the text object
> should be based on camera parameters, like look_at and position and
> sky, etc., so I can move the camera and have the stopwatch stay in the
> same location on the images.
This is how I do it.
#declare CamSky=y;
#declare CamZoom=2.5; // the length of the direction vector in the
// camera
// if you're accustomed to setting the zoom with the angle setting, then
// use this line to set the camera zoom instead:
#declare CamZoom=.5/tan(radians(CameraAngle/2));
#declare CamLoc=MyCameraLocation; // wherever you're putting it
#declare CamEye=MyCameraLookAt; // wherever you're looking
#local CamD=vnormalize(CamEye-CamLoc); // direction of camera view
#local CamR=vnormalize(vcross(CamSky,CamD)); // to the right
#local CamU=vnormalize(vcross(CamD,CamR)); // camera up
camera {
direction CamD*CamZoom
right CamR*4/3 // 4/3 is my aspect ratio
up CamU
location CamLoc
}
sphere { <2/3-.05,1/2-.05,CamZoom>,.025
no_shadow // subtitling shouldn't cast shadows in the scene
pigment { rgb <1,1,0> }
finish { ambient 1 diffuse 0 } // keeps appearance consistent as
// camera moves
matrix < CamR.x, CamR.y, CamR.z,
CamU.x, CamU.y, CamU.z,
CamD.x, CamD.y, CamD.z,
CamLoc.x,CamLoc.y,CamLoc.z >
}
> 3) I want to do the stopwatch in such a way that it doesn't have any
> perspective distortion. Ideally, it should look like it was
> superimposed on the image after the rendering.
This is only a problem with a wide camera angle, and then only if your
object is lengthy along the z axis.
> Any help is appreciated. Thanks, Bill.
Hope this helps,
John
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Bill Brehm
Subject: Re: Placing a stopwatch in a fixed position on the image
Date: 1 Oct 2000 12:02:26
Message: <39d76012@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Thanks John. I've been experimenting with this and have noticed some
"problems". I don't quite have a full picture of what the matrix command is
doing, so I haven't been able to solve these problems on my own.
1) With a CamZoom of 2.5, I see no distortion in the sphere. At CamZoom = 1,
I can see the sphere beginning to distort. With low CamZooms of 0.1, the
sphere gets really stretched out. It looks like it's being stretched towards
a vanishing point at the center of the field of view. Perhaps it is alway
stretched parallel to CamD, but it isn't noticeable when the zoom is high
and the camera is far away.
2) If CamLoc is located along the Y axis, I get "error: Singular matrix in
MInvers."
3) I notice with text (replacing the sphere) that has depth, that the depth
is more visible the further the text is from the center of the field of
view. I can give the text an aribrarily small depth , but it would be nice
to be able to give it zero depth so it is always flat. Is there a way?
4) I need a fudge factor, greater than 1, in the camera location position,
otherwise the text disappears. I think it is directly to the right of the
camera and therefore is not in the field of view.
Attached are the two files as I've modified them. The first covers questions
1 and 2 and the second, 3 and 4.
Thanks.
File one:
#version 3.1
global_settings { assumed_gamma 2.2 }
global_settings { ambient_light 1 }
#include "colors.inc"
#include "textures.inc"
background { color SteelBlue }
#if (clock = 0)
#fopen InfoFile "cam.txt" write
#write (InfoFile "Cam Info File\n\n")
#end
#declare CamSky=y;
#declare CamZoom=.1; // the length of the direction vector in the
// camera
// if you're accustomed to setting the zoom with the angle setting, then
// use this line to set the camera zoom instead:
//#declare CamZoom=.5/tan(radians(CameraAngle/2));
#declare CamLoc=<-325,-650,-325>; //MyCameraLocation; // wherever you're
putting it
//#declare CamLoc=<0,-650,0>; //camera in Y axis
#declare CamEye=<0,0,0>;//MyCameraLookAt; // wherever you're looking
#local CamD=vnormalize(CamEye-CamLoc); // direction of camera view
#local CamR=vnormalize(vcross(CamSky,CamD)); // to the right
#local CamU=vnormalize(vcross(CamD,CamR)); // camera up
camera {
direction CamD*CamZoom
right CamR*4/3 // 4/3 is my aspect ratio
up CamU
location CamLoc
}
light_source {CamLoc color White translate <-150, 0, 0>}
//sphere { <0, 0, 0>,25/CamZoom} // sphere at origin
sphere { <0, 0, 0>,.025
//box { <-.025, -.025, -.025>, <.025, .025, .025>
no_shadow // subtitling shouldn't cast shadows in the scene
pigment { rgb <1,1,0> }
//finish { ambient 0.5 diffuse 0 } // keeps appearance consistent as
// camera moves
//scale <1, 1, .001>
//rotate <45, 45, 0>
translate <2/3-.05,1/2-.05,CamZoom>
//translate <0, 0, CamZoom>
matrix < CamR.x, CamR.y, CamR.z,
CamU.x, CamU.y, CamU.z,
CamD.x, CamD.y, CamD.z,
CamLoc.x,CamLoc.y,CamLoc.z >
}
#ifdef (InfoFile)
#write (InfoFile "CamD = ", CamD.x, ", ", CamD.y, ", ", CamD.z, "\n")
#write (InfoFile "CamR = ", CamR.x, ", ", CamR.y, ", ", CamR.z, "\n")
#write (InfoFile "CamU = ", CamU.x, ", ", CamU.y, ", ", CamU.z, "\n")
#write (InfoFile, "\n")
#end
#fclose InfoFile
File two:
#declare CameraLocation = <-325, -650, -325>;
#declare CameraLookAt = <0, 0, 0>;
#declare CameraSky = y;
#declare CameraVector = CameraLocation - CameraLookAt;
#declare CameraZoom=1; // the length of the direction vector in the
#local CameraDirection=vnormalize(CameraLookAt-CameraLocation); // direction
of camera view
#local CameraRight=vnormalize(vcross(CameraSky,CameraDirection)); // to the
right
#local CameraUp=vnormalize(vcross(CameraDirection,CameraRight)); // camera
up
camera {
location CameraLocation*1.015 // need a fudge factor here, otherwise text
disappears
right CameraRight * 4/3
up CameraUp
sky CameraSky
direction CameraDirection * CameraZoom
//look_at CameraLookAt
}
#version 3.1
global_settings { assumed_gamma 2.2 }
global_settings { ambient_light 1 }
#include "colors.inc"
#include "textures.inc"
background { color SteelBlue }
#declare LightCt = 6;
#declare i = 0;
#while (i < LightCt)
light_source {<600, 0, -400> color Gray50 rotate <0, 0, 360 / LightCt *
i>}
#declare i = i + 1;
#end
#declare uclock = 83.456;
// clock display
#local ClockHours = int(uclock / 3600);
#local ClockMinutes = int(uclock / 60) - (ClockHours * 60);
#local ClockSeconds = uclock - (ClockHours * 3600) - (ClockMinutes * 60);
#local ClockString = concat(str(ClockHours, -2, 0), ":",
str(ClockMinutes, -2, 0), ":", str(ClockSeconds, -6, 3))
text {
ttf "d:\winnt\fonts\cour.ttf" ClockString 1, <0, 0, 0>
scale <1, 1, 0.001>
translate <4-3.5,-5.5,0>
no_shadow // subtitling shouldn't cast shadows in the scene
matrix < CameraRight.x, CameraRight.y, CameraRight.z,
CameraUp.x, CameraUp.y, CameraUp.z,
CameraDirection.x, CameraDirection.y, CameraDirection.z,
CameraLocation.x,CameraLocation.y,CameraLocation.z >
}
"John VanSickle" <van### [at] erols com> wrote in message
news:39D1E67D.A5F697DD@erols.com...
> Bill Brehm wrote:
> >
> > I want to place a stop watch type counter in the lower right corner of
> > an animation. I has the animation working and the stop watch text too.
> > I have some problems:
> >
> > 1) I can't figure out the formula for rotating a text object so it is
> > parallel to the image plane and upright as the camera sees it. I've
> > tried all kinds of vector functions, be can't figure it out.
>
> It's simpler to use a matrix transform. All but one of my IRTC entries
> has subtitling of some kind, so I make heavy use of this.
>
> > 2) Ideally, the rotation and position and size of the text object
> > should be based on camera parameters, like look_at and position and
> > sky, etc., so I can move the camera and have the stopwatch stay in the
> > same location on the images.
>
> This is how I do it.
>
> #declare CamSky=y;
> #declare CamZoom=2.5; // the length of the direction vector in the
> // camera
>
> // if you're accustomed to setting the zoom with the angle setting, then
> // use this line to set the camera zoom instead:
> #declare CamZoom=.5/tan(radians(CameraAngle/2));
>
> #declare CamLoc=MyCameraLocation; // wherever you're putting it
> #declare CamEye=MyCameraLookAt; // wherever you're looking
>
> #local CamD=vnormalize(CamEye-CamLoc); // direction of camera view
> #local CamR=vnormalize(vcross(CamSky,CamD)); // to the right
> #local CamU=vnormalize(vcross(CamD,CamR)); // camera up
>
> camera {
> direction CamD*CamZoom
> right CamR*4/3 // 4/3 is my aspect ratio
> up CamU
> location CamLoc
> }
>
> sphere { <2/3-.05,1/2-.05,CamZoom>,.025
> no_shadow // subtitling shouldn't cast shadows in the scene
> pigment { rgb <1,1,0> }
> finish { ambient 1 diffuse 0 } // keeps appearance consistent as
> // camera moves
> matrix < CamR.x, CamR.y, CamR.z,
> CamU.x, CamU.y, CamU.z,
> CamD.x, CamD.y, CamD.z,
> CamLoc.x,CamLoc.y,CamLoc.z >
> }
>
> > 3) I want to do the stopwatch in such a way that it doesn't have any
> > perspective distortion. Ideally, it should look like it was
> > superimposed on the image after the rendering.
>
> This is only a problem with a wide camera angle, and then only if your
> object is lengthy along the z axis.
>
> > Any help is appreciated. Thanks, Bill.
>
> Hope this helps,
> John
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Rune
Subject: Re: Placing a stopwatch in a fixed position on the image
Date: 1 Oct 2000 16:36:21
Message: <39d7a045@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Bill Brehm" wrote:
> At CamZoom = 1, I can see the sphere beginning to distort.
> With low CamZooms of 0.1, the sphere gets really stretched out.
<snip>
> I notice with text (replacing the sphere) that has depth, that
> the depth is more visible the further the text is from the
> center of the field of view.
Both of those problems are caused by the fact that your stopwatch etc. are
actual parts of the scene, and are thus affected by the perspective of the
scene (and lightning and other effects).
To avoid completely the scene affecting your stopwatch etc., you have to
render them seperately, and then insert an image of them in your scene.
So you make another scene where only your stopwatch etc. are visible. You
turn on the alpha channel and output to a png file, or a sequence of png
files if you want it to be animated.
In your actual scene you place the prior rendered images just in front of
the camera.
To include the right image in the right frame you can use the code below.
This example will include "watch01.png" to "watch35.png".
#declare SequenceName = "watch"
#declare SequenceLength = 35;
#declare Cyclic = false;
#declare NumberLength = int(log(SequenceLength)/log(10)+1);
#declare ImageNumber = int(clock*(SequenceLength-(1-Cyclic)+0.00001)+1);
#declare ImageName = concat(
SequenceName,
str(ImageNumber,-NumberLength,0),
".png"
)
You can use the image_map like this: image_map {png ImageName once}
And then use VanSickle's code to place it in front of the camera.
Greetings,
Rune
--
\ Include files, tutorials, 3D images, raytracing jokes,
/ The POV Desktop Theme, and The POV-Ray Logo Contest can
\ all be found at http://rsj.mobilixnet.dk (updated October 1)
/ Also visit http://www.povrayusers.org
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: John VanSickle
Subject: Re: Placing a stopwatch in a fixed position on the image
Date: 1 Oct 2000 22:47:26
Message: <39D7F83F.E2013A94@erols.com>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Bill Brehm wrote:
>
> Thanks John. I've been experimenting with this and have noticed some
> "problems". I don't quite have a full picture of what the matrix
> command is doing, so I haven't been able to solve these problems on my
> own.
I maintain a page that explains what the matrix transform does.
The matrix in the example code moves objects so that they are in front
of the camera.
> 1) With a CamZoom of 2.5, I see no distortion in the sphere. At CamZoom = 1,
> I can see the sphere beginning to distort. With low CamZooms of 0.1, the
> sphere gets really stretched out. It looks like it's being stretched towards
> a vanishing point at the center of the field of view. Perhaps it is alway
> stretched parallel to CamD, but it isn't noticeable when the zoom is high
> and the camera is far away.
I never use a zoom of .1, and rarely use one below 2, so I don't experience
this problem.
One thing you can do is to render the stopwatch as a series of GIFs and use
them as small image-mapped polygons in the corner of the screen; since they
are flat, they will not be distorted.
> 2) If CamLoc is located along the Y axis, I get "error: Singular matrix in
> MInvers."
This is a problem when the vector from CamLoc to CamEye is parallel to
CamSky. You appear to be using a z-up, y-forward camera system, or are shooting
for a bird's eye view; in either case, change CamSky to point in some other
direction (CamSky=z, for instance).
> 3) I notice with text (replacing the sphere) that has depth, that the depth
> is more visible the further the text is from the center of the field of
> view. I can give the text an aribrarily small depth , but it would be nice
> to be able to give it zero depth so it is always flat. Is there a way?
Yes. Specify zero depth. It's perfectly legal.
> 4) I need a fudge factor, greater than 1, in the camera location position,
> otherwise the text disappears. I think it is directly to the right of the
> camera and therefore is not in the field of view.
Fudge factoring the camera location is WRONG for the effect we're trying
to achieve here. You're looking for a way to place the text so that if
follows the camera; therefore if it doesn't, alter the text placement, and
NOT the camera placement.
Remember that when text is declared, it is placed at the origin, with its
depth extending in the positive z direction, and the width going in the
positive x direction. Move the text when you declare it, and then apply
the matrix, like this:
text { ttf "myfont.ttf", "Text",0,0
translate -x*TextWidth // you need to figure out how wide this is
scale .1 // to make it smaller
translate <2/3-.05,-.45,CamZoom>
matrix < CamR.x,CamR.y,CamR.z, CamU.x,CamU.y,CamU.z,
CamD.x,CamD.y,CamD.z, CamLoc.x,CamLoc.y,CamLoc.z >
}
Regards,
John
--
ICQ: 46085459
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Bill Brehm
Subject: Re: Placing a stopwatch in a fixed position on the image
Date: 2 Oct 2000 11:52:07
Message: <39d8af27@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
John,
I've found your page and the description is helping me to understand.
1) I don't know if I'll ever need a zoom of 0.1. But I generally used a zoom
of 1.0 and I see the effect. I will work to understand the cause and find a
fix.
2) Acknowledged. I'm guessing that one of the vcross results is a zero
length vector and that is the cause of the error. I'll through some checks
in before the matrix operation.
3) I was trying to scale the text to zero thickness, but it seems that a
zero scale factor is interpretted as one. When I set the text thickness to
zero, it worked perfectly.
4) I totally agree that the text should be manipulated and not the camera. I
just hadn't figured out how. With a little experimentation, it seems that
pushing the text back in the +z direction before matrix'ing it does the
trick. It also makes sense in that the matrix'ed text will be pushed back
along the line of sight. Your example actually did this by placing the
sphere at z position CamZoom.
4b) Is there a way to determine the length in units of a text object?
Something like textObject.length?
4c) Is there a way to determine the height or depth of a text object or any
object in general?
4d) Is there a way to extract parameters from the current camera, without
"passing" them in as "#local"s. Something like cameraObject.look_at.x?
Thanks and regards,
Bill
"John VanSickle" <van### [at] erols com> wrote in message
news:39D7F83F.E2013A94@erols.com...
> Bill Brehm wrote:
> >
> > Thanks John. I've been experimenting with this and have noticed some
> > "problems". I don't quite have a full picture of what the matrix
> > command is doing, so I haven't been able to solve these problems on my
> > own.
>
> I maintain a page that explains what the matrix transform does.
>
> The matrix in the example code moves objects so that they are in front
> of the camera.
>
> > 1) With a CamZoom of 2.5, I see no distortion in the sphere. At CamZoom
= 1,
> > I can see the sphere beginning to distort. With low CamZooms of 0.1, the
> > sphere gets really stretched out. It looks like it's being stretched
towards
> > a vanishing point at the center of the field of view. Perhaps it is
alway
> > stretched parallel to CamD, but it isn't noticeable when the zoom is
high
> > and the camera is far away.
>
> I never use a zoom of .1, and rarely use one below 2, so I don't
experience
> this problem.
>
> One thing you can do is to render the stopwatch as a series of GIFs and
use
> them as small image-mapped polygons in the corner of the screen; since
they
> are flat, they will not be distorted.
>
> > 2) If CamLoc is located along the Y axis, I get "error: Singular matrix
in
> > MInvers."
>
> This is a problem when the vector from CamLoc to CamEye is parallel to
> CamSky. You appear to be using a z-up, y-forward camera system, or are
shooting
> for a bird's eye view; in either case, change CamSky to point in some
other
> direction (CamSky=z, for instance).
>
> > 3) I notice with text (replacing the sphere) that has depth, that the
depth
> > is more visible the further the text is from the center of the field of
> > view. I can give the text an aribrarily small depth , but it would be
nice
> > to be able to give it zero depth so it is always flat. Is there a way?
>
> Yes. Specify zero depth. It's perfectly legal.
>
> > 4) I need a fudge factor, greater than 1, in the camera location
position,
> > otherwise the text disappears. I think it is directly to the right of
the
> > camera and therefore is not in the field of view.
>
> Fudge factoring the camera location is WRONG for the effect we're trying
> to achieve here. You're looking for a way to place the text so that if
> follows the camera; therefore if it doesn't, alter the text placement, and
> NOT the camera placement.
>
> Remember that when text is declared, it is placed at the origin, with its
> depth extending in the positive z direction, and the width going in the
> positive x direction. Move the text when you declare it, and then apply
> the matrix, like this:
>
> text { ttf "myfont.ttf", "Text",0,0
> translate -x*TextWidth // you need to figure out how wide this is
> scale .1 // to make it smaller
> translate <2/3-.05,-.45,CamZoom>
> matrix < CamR.x,CamR.y,CamR.z, CamU.x,CamU.y,CamU.z,
> CamD.x,CamD.y,CamD.z, CamLoc.x,CamLoc.y,CamLoc.z >
> }
>
> Regards,
> John
>
> --
> ICQ: 46085459
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: John VanSickle
Subject: Re: Placing a stopwatch in a fixed position on the image
Date: 2 Oct 2000 19:21:48
Message: <39D9198F.A21F0A06@erols.com>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Bill Brehm wrote:
>
> I've found your page and the description is helping me to understand.
>
> 1) I don't know if I'll ever need a zoom of 0.1. But I generally used a zoom
> of 1.0 and I see the effect. I will work to understand the cause and find a
> fix.
If you make the object very thin in the z-direction, the effect will
br greatly reduced.
> 2) Acknowledged. I'm guessing that one of the vcross results is a zero
> length vector and that is the cause of the error. I'll through some checks
> in before the matrix operation.
(Nods head.)
> 3) I was trying to scale the text to zero thickness, but it seems that a
> zero scale factor is interpretted as one. When I set the text thickness to
> zero, it worked perfectly.
Uh-uh. Specify zero thickness in the text object parameters. It's the
third parameter.
> 4b) Is there a way to determine the length in units of a text object?
> Something like textObject.length?
I'm told this will be added to version 3.5. Until then (if you don't
use MegaPOV), here's some code I use:
//START OF CODE
#local A=6.243;
camera { direction z*16 location -z*12+x*A look_at x*A }
plane { -z,0 pigment { gradient x
color_map { [0 rgb 0 ][1 rgb 1] }
scale A
}
finish { ambient 1 diffuse 0 }
}
text { ttf "c:\windows\fonts\tahoma.ttf",
"What's taking them so long?",0,0 no_shadow hollow
matrix <1,0,0, 0,1,0, 0,0,1, -A,-0.375,-.0001>
pigment { rgb <1,0,0>}
finish { ambient 1 diffuse 0 }
}
// END OF CODE
Render this at 512x384. Replace the text and the font with the ones you
want, and adjust the value of A until the right edge of the text falls
directly on the border between the black and white areas. This will give
you the amount needed to move the text in the -x direction in order to
center it on the origin; double it to right-align it.
> 4c) Is there a way to determine the height or depth of a text object or any
> object in general?
For text, they have the depth you specify in the depth parameter, subject
to whatever scaling you apply after that. Capital letters of text are .75
units tall in the y-direction.
For other objects, unless you have MegaPOV (or when V3.5 comes out), you'll
have to calculate it from what was modelled.
> 4d) Is there a way to extract parameters from the current camera, without
> "passing" them in as "#local"s. Something like cameraObject.look_at.x?
Nope. That's why I use the method I demonstrated here.
Regards,
John
--
ICQ: 46085459
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |