|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hi,
I am new to POV-Ray and have no previous programming experience, so please
forgive me if this is a simple question. I a trying to write an .inc file of
an etched tile. I want the tile and the lettering to be two different colors
and to be able to easily edit the colors of the tile from the scene file I add
it into. I know that if I do not include a color/texture in the .inc file I
can define the it in the scene, but it makes the tile and writing the same
color/texture. Is there a way I can determine or change the color/texture of
the individual components of the tile from the scene file? I would also like
to be able to easily change the pigment, texture, and finish of the tile in
the .inc file from the scene file. Do I need to include the standard .inc
files, such as colors, textures, or stones1 into my .inc file, or will it work
if I include them in the scene? I have included my tile below and added in the
color and texture as an example of what I am trying to do. Thanks a lot for any
help you can give me.
Jug
declare Silver = // Element Tile
union{
difference{ // Front Plate and Lettering
box{<0, 0, 0>, // Box, Near lower left corner
< 1.6, 2.2, 0.2> // Far upper right corner
texture {T_Stone1} // color
translate <0, 0, 0>} // location
text {ttf "Arial.ttf" "Ag" 5, 0 // text and symbol
pigment {Green} // color
scale 1 // scale
translate <.2, .5, -1>} // location
text {ttf "Arial.ttf" "47" 5, 0 // text and number
pigment {Green} // color
scale 0.6 // scale
translate <.1, 1.6, -1>} // location
translate <0.25, 0.25, >} // location
difference{ // Boarder and Back Plate
box{<0, 0, 0>, // Boarder, Near lower left corner
< 2.1, 2.7, 0.3> // Far upper right corner
texture {T_Stone1}} // color
box{<0.15, 0.15, -0.1>, // Negative Space, Near lower left corner
< 1.95, 2.55, 0.2> // Far upper right corner
pigment {Green}}}} // color
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Jug" <nomail@nomail> wrote in message
news:web.489bf2df611ced9672762ce30@news.povray.org...
> Hi,
> I am new to POV-Ray and have no previous programming experience, so
> please
> forgive me if this is a simple question. I a trying to write an .inc file
> of
> an etched tile. I want the tile and the lettering to be two different
> colors
> and to be able to easily edit the colors of the tile from the scene file I
> add
> it into. I know that if I do not include a color/texture in the .inc file
> I
> can define the it in the scene, but it makes the tile and writing the same
> color/texture. Is there a way I can determine or change the color/texture
> of
> the individual components of the tile from the scene file? I would also
> like
> to be able to easily change the pigment, texture, and finish of the tile
> in
> the .inc file from the scene file. Do I need to include the standard .inc
> files, such as colors, textures, or stones1 into my .inc file, or will it
> work
> if I include them in the scene? I have included my tile below and added
> in the
> color and texture as an example of what I am trying to do. Thanks a lot
> for any
> help you can give me.
>
> Jug
it's all about order ..... in your scene file if you have #include
"colors.inc" before you have #include "myobject.inc" it will know about the
colors without having those entries in the .inc file also. if your object
had just one texture or pigment, you could build you object in the .inc file
without any mention of color. Back in your scene file (.pov) you could call
your object like this: object {MyObject {pigment Green}} since your object
has more that one pigment/texture i'd make the .inc file a macro that way
you could call your object like this: MyObject (T_Stone1, Green) or MyObject
(T_Stone2, Blue)
hope this helps
Jim
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Jug" <nomail@nomail> wrote in message
news:web.489bf2df611ced9672762ce30@news.povray.org...
> Hi,
> I am new to POV-Ray and have no previous programming experience, so
> please
> forgive me if this is a simple question. I a trying to write an .inc file
> of
> an etched tile. I want the tile and the lettering to be two different
> colors
> and to be able to easily edit the colors of the tile from the scene file I
> add
> it into. I know that if I do not include a color/texture in the .inc file
> I
> can define the it in the scene, but it makes the tile and writing the same
> color/texture. Is there a way I can determine or change the color/texture
> of
> the individual components of the tile from the scene file? I would also
> like
> to be able to easily change the pigment, texture, and finish of the tile
> in
> the .inc file from the scene file. Do I need to include the standard .inc
> files, such as colors, textures, or stones1 into my .inc file, or will it
> work
> if I include them in the scene? I have included my tile below and added
> in the
> color and texture as an example of what I am trying to do. Thanks a lot
> for any
> help you can give me.
>
> Jug
Hi and Welcome.
There are actually lots of approaches you could take.
I very much prefer the approach that I've illustrated below using #ifdef and
#ifndef to define default texture values. As you can see from the
'WritingTexture' declaration, you can nest these to provide the sort of
flexibility you mentioned in your question: If 'WritingTexture' is already
defined by the time your include file is parsed, it'll use that. Otherwise
if 'WritingPigment' or 'WritingNormal' are defined it'll use them to
construct 'WritingTexture'. If none are defined it'll just define defaults
and plough on regardless.
You can use a similar technique to define any #include files that you're
dependent upon if they weren't already included.
By testing for everything you need you can make a very robust little
#include file. By providing defaults for everything, anyone can start using
the file without having to initially worry about setting variables,
parameters etc.
If you're planning to generate multiple element blocks (e.g. a whole
periodic table), you're probably better off wrapping the contents of your
#include file in a macro statement e.g. #macro Element() .... #end. Then you
can #include it once and call it many times.
p.s. To revert to default settings between macro calls you can use #undef on
textures, pigments or normals that were previously declared.
Regards,
Chris B.
#ifndef (Green) #include "colors.inc" #end
#ifndef (T_Stone1) #include "stones.inc" #end
#ifndef(BlockTexture)
#declare BlockTexture = texture {T_Stone1}
#end
#ifndef(WritingTexture)
#declare WritingTexture = texture {
#ifdef (WritingPigment) pigment {WritingPigment}
#else pigment {Green}
#end
#ifdef (WritingNormal) pigment {WritingNormal}
#else normal {agate scale 0.5}
#end
}
#end
#declare Silver = union{ // Element Tile
difference{ // Front Plate and Lettering
box{<0, 0, 0>, // Box, Near lower left corner
< 1.6, 2.2, 0.2> // Far upper right corner
texture {BlockTexture} // color
translate <0, 0, 0> // location
}
text {ttf "Arial.ttf" "Ag" 5, 0 // text and symbol
texture {WritingTexture} // color
scale 1 // scale
translate <.2, .5, -1> // location
}
text {ttf "Arial.ttf" "47" 5, 0 // text and number
texture {WritingTexture} // color
scale 0.6 // scale
translate <.1, 1.6, -1> // location
}
translate <0.25, 0.25, > // location
}
difference{ // Border and Back Plate
box{<0, 0, 0>, // Border, Near lower left corner
< 2.1, 2.7, 0.3> // Far upper right corner
texture {T_Stone1} // color
}
box{<0.15, 0.15, -0.1>, // Negative Space, Near lower left corner
< 1.95, 2.55, 0.2> // Far upper right corner
texture {WritingTexture} // color
}
}
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Chris B" <nom### [at] nomailcom> wrote:
> "Jug" <nomail@nomail> wrote in message
> news:web.489bf2df611ced9672762ce30@news.povray.org...
> > Hi,
> > I am new to POV-Ray and have no previous programming experience, so
> > please
> > forgive me if this is a simple question. I a trying to write an .inc file
> > of
> > an etched tile. I want the tile and the lettering to be two different
> > colors
> > and to be able to easily edit the colors of the tile from the scene file I
> > add
> > it into. I know that if I do not include a color/texture in the .inc file
> > I
> > can define the it in the scene, but it makes the tile and writing the same
> > color/texture. Is there a way I can determine or change the color/texture
> > of
> > the individual components of the tile from the scene file? I would also
> > like
> > to be able to easily change the pigment, texture, and finish of the tile
> > in
> > the .inc file from the scene file. Do I need to include the standard .inc
> > files, such as colors, textures, or stones1 into my .inc file, or will it
> > work
> > if I include them in the scene? I have included my tile below and added
> > in the
> > color and texture as an example of what I am trying to do. Thanks a lot
> > for any
> > help you can give me.
> >
> > Jug
>
> Hi and Welcome.
>
> There are actually lots of approaches you could take.
>
> I very much prefer the approach that I've illustrated below using #ifdef and
> #ifndef to define default texture values. As you can see from the
> 'WritingTexture' declaration, you can nest these to provide the sort of
> flexibility you mentioned in your question: If 'WritingTexture' is already
> defined by the time your include file is parsed, it'll use that. Otherwise
> if 'WritingPigment' or 'WritingNormal' are defined it'll use them to
> construct 'WritingTexture'. If none are defined it'll just define defaults
> and plough on regardless.
>
> You can use a similar technique to define any #include files that you're
> dependent upon if they weren't already included.
>
> By testing for everything you need you can make a very robust little
> #include file. By providing defaults for everything, anyone can start using
> the file without having to initially worry about setting variables,
> parameters etc.
>
> If you're planning to generate multiple element blocks (e.g. a whole
> periodic table), you're probably better off wrapping the contents of your
> #include file in a macro statement e.g. #macro Element() .... #end. Then you
> can #include it once and call it many times.
>
> p.s. To revert to default settings between macro calls you can use #undef on
> textures, pigments or normals that were previously declared.
>
> Regards,
> Chris B.
>
> #ifndef (Green) #include "colors.inc" #end
> #ifndef (T_Stone1) #include "stones.inc" #end
>
> #ifndef(BlockTexture)
> #declare BlockTexture = texture {T_Stone1}
> #end
> #ifndef(WritingTexture)
> #declare WritingTexture = texture {
> #ifdef (WritingPigment) pigment {WritingPigment}
> #else pigment {Green}
> #end
> #ifdef (WritingNormal) pigment {WritingNormal}
> #else normal {agate scale 0.5}
> #end
> }
> #end
>
>
> #declare Silver = union{ // Element Tile
> difference{ // Front Plate and Lettering
> box{<0, 0, 0>, // Box, Near lower left corner
> < 1.6, 2.2, 0.2> // Far upper right corner
> texture {BlockTexture} // color
> translate <0, 0, 0> // location
> }
> text {ttf "Arial.ttf" "Ag" 5, 0 // text and symbol
> texture {WritingTexture} // color
> scale 1 // scale
> translate <.2, .5, -1> // location
> }
> text {ttf "Arial.ttf" "47" 5, 0 // text and number
> texture {WritingTexture} // color
> scale 0.6 // scale
> translate <.1, 1.6, -1> // location
> }
> translate <0.25, 0.25, > // location
> }
>
> difference{ // Border and Back Plate
> box{<0, 0, 0>, // Border, Near lower left corner
> < 2.1, 2.7, 0.3> // Far upper right corner
> texture {T_Stone1} // color
> }
> box{<0.15, 0.15, -0.1>, // Negative Space, Near lower left corner
> < 1.95, 2.55, 0.2> // Far upper right corner
> texture {WritingTexture} // color
> }
> }
> }
Hi,
Any ideas on how to actually write a macro to arrange all the elements in a
table?
-OT
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
OT <nomail@nomail> wrote:
> Any ideas on how to actually write a macro to arrange all the elements in a
> table?
http://povray.org/documentation/view/3.6.1/430/
--
- Warp
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Warp" <war### [at] tagpovrayorg> wrote in message
news:4a6f2cf7@news.povray.org...
> OT <nomail@nomail> wrote:
>> Any ideas on how to actually write a macro to arrange all the elements in
>> a
>> table?
>
> http://povray.org/documentation/view/3.6.1/430/
>
I assume you mean the periodic table. My first instinct was, like Warp, to
suggest arrays, but I don't think you actually need them. The macro below
should do the job. The reason for first assigning the text to variables
rather than writing it directly into the scene is simply to allow it to be
centre aligned within the box.
Regards,
Chris B.
camera {orthographic location <9, 15,-5> look_at <9,0,-5>}
global_settings { ambient_light 10}
#macro AddElement(Number, Symbol, Group, Period)
union {
box {<-0.4,-1,-0.4>,<0.4,-0.1,0.4> pigment {rgb BoxColor}}
#local NumberText = text {ttf "timrom.ttf" Number 1,0 pigment {rgb
TextColor} scale 0.4 rotate x*90}
#local SymbolText = text {ttf "timrom.ttf" Symbol 1,0 pigment {rgb
TextColor} scale 0.4 rotate x*90}
object {NumberText translate
z*0.2-(min_extent(NumberText)+max_extent(NumberText))/2}
object {SymbolText
translate -z*0.2-(min_extent(SymbolText)+max_extent(SymbolText))/2}
translate <Group,0,-Period>
}
#end
#declare TextColor = <2,0,0>;
#declare BoxColor = <0.5,1,0.5>;
AddElement( "1","H" , 1,1)
#declare BoxColor = <0.5,1,1 >;
AddElement( "2","He", 18,1)
// ...
#declare BoxColor = <1,0.3,0.3>;
AddElement( "3","Li", 1,2)
AddElement( "11","Na", 1,3)
AddElement( "87","Fr", 1,7)
// ...
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Chris B" <nom### [at] nomailcom> wrote in message
news:4a6f3d4d@news.povray.org...
>
> I assume you mean the periodic table. ...
>
I started playing around with the macro, changing the CSG 'union' to a
'difference', adding the rest of the elements and a key. If this is what you
want, it's now up on the Object Collection at:
http://lib.povray.org/searchcollection/index2.php?objectName=PeriodicTable&version=1.0&contributorTag=chrisb
Regards,
Chris B.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|