![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"X-Caliber" <nomail@nomail> wrote:
> I want to create a faceted checkered sphere (much along the lines of the
> Amiga "Boing!" ball).
>
> To do this I figure I'd take a sphere, build a several rings of boxes (one
> for each vertical level of facets, eight I guess), each ring rotationally
> staggered from the one above/below (I figure seven boxes per ring, so each
> staggered ring would be rotated along the vertical axis by 1/14th of a full
> rotation), and then this superstructure would be merged together, given one
> set of attributes to cut into the sphere with, spun 1/14th a turn, and cut
> again with another set of attributes.
>
> I could be pretty far ahead of myself here though, as I don't really know
> how to do any of that. :-)
You could write a quick loop to do this, though I'd do intersections of
planes instead of removing cubes from a sphere... Or at least I'd think it
would be quicker (render wise).
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) |
"Mienai" <Mienai> wrote:
> "X-Caliber" <nomail@nomail> wrote:
> > I want to create a faceted checkered sphere (much along the lines of the
> > Amiga "Boing!" ball).
> >
> > To do this I figure I'd take a sphere, build a several rings of boxes (one
> > for each vertical level of facets, eight I guess), each ring rotationally
> > staggered from the one above/below (I figure seven boxes per ring, so each
> > staggered ring would be rotated along the vertical axis by 1/14th of a full
> > rotation), and then this superstructure would be merged together, given one
> > set of attributes to cut into the sphere with, spun 1/14th a turn, and cut
> > again with another set of attributes.
> >
> > I could be pretty far ahead of myself here though, as I don't really know
> > how to do any of that. :-)
>
> You could write a quick loop to do this, though I'd do intersections of
> planes instead of removing cubes from a sphere... Or at least I'd think it
> would be quicker (render wise).
If planes would work, I imagine proper bounding would limit their negative
effect, and it'd prolly be easier to generate numbers for positioning.
I don't follow how they would actually work though, as opposed to boxes
which are > 2 dimensional, therefore much saner to operate on 3 dimensional
objects with.
I figured a few loops would do the box setup conveniently (and with partial
effective adjustably!). Not that I know how to pull that off, being a mere
highly technical noob. I'm meandering about the web for scripts that I can
learn from, not going very fast though (my trig skills are nonexistant, so
I expect this to hurt a bit).
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) |
X-Caliber wrote:
>
> I don't follow how they [planes] would actually work though, as
> opposed to boxes which are > 2 dimensional, therefore much saner
> to operate on 3 dimensional objects with.
Planes are three dimensional. You are looking at the surface, but
everything "below" the surface is considered inside the plane. Look at
this object, for instance:
intersection {
plane { x, 1 }
plane { -x, 1 }
plane { y, 1 }
plane { -y, 1 }
plane { z, 1 }
plane { -z, 1 }
pigment { rgb y }
}
camera {
location <5,5,5>
look_at <0,0,0>
}
light_source {
<25,250,500>
color rgb 1
}
This makes a cube. Intersecting planes can also be rotated to make a
faceted sphere, although a mesh would be tons easier. Rotate points
around an axis and then connect the points with triangles.
-Shay
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) |
Shay <ema### [at] yourhost com> wrote:
> Planes are three dimensional. You are looking at the surface, but
> everything "below" the surface is considered inside the plane. Look at
> this object, for instance:
>
> intersection {
> plane { x, 1 }
> plane { -x, 1 }
> plane { y, 1 }
> plane { -y, 1 }
> plane { z, 1 }
> plane { -z, 1 }
> pigment { rgb y }
> }
> camera {
> location <5,5,5>
> look_at <0,0,0>
> }
> light_source {
> <25,250,500>
> color rgb 1
> }
>
> This makes a cube. Intersecting planes can also be rotated to make a
> faceted sphere, although a mesh would be tons easier. Rotate points
> around an axis and then connect the points with triangles.
Cool demo.
I dunno how to do it meshwise, so I ended up with an object intersection
define of 56 planes which gets intersected with itsself later on. Heres the
short version...
camera {
location <1, 2.5, 4>
look_at <0, 0, 0>
}
light_source { <5, 5, 3> color <1, 1, .8> }
light_source { <-5, 0, 3> color <1, .8, 1> }
light_source { <5, 0, -3> color <.8, 1, 1> }
background {}
#declare CircCount = 7;
#declare VertCount = 8;
#declare CircFreq = 360 / CircCount;
#declare VertFreq = 180 / VertCount;
#declare HalfBoingSlice =
intersection {
plane { z, 2 rotate <-VertFreq*3.5, 0, 0> }
plane { z, 2 rotate <-VertFreq*2.5, CircFreq*0.5, 0> }
plane { z, 2 rotate <-VertFreq*1.5, 0, 0> }
plane { z, 2 rotate <-VertFreq*0.5, CircFreq*0.5, 0> }
plane { z, 2 rotate <VertFreq*0.5, 0, 0> }
plane { z, 2 rotate <VertFreq*1.5, CircFreq*0.5, 0> }
plane { z, 2 rotate <VertFreq*2.5, 0, 0> }
plane { z, 2 rotate <VertFreq*3.5, CircFreq*0.5, 0> }
}
#declare HalfBoing =
intersection {
object { HalfBoingSlice }
object { HalfBoingSlice rotate CircFreq*y }
object { HalfBoingSlice rotate CircFreq*2*y }
object { HalfBoingSlice rotate CircFreq*3*y }
object { HalfBoingSlice rotate CircFreq*4*y }
object { HalfBoingSlice rotate CircFreq*5*y }
object { HalfBoingSlice rotate CircFreq*6*y }
object { HalfBoingSlice rotate CircFreq*7*y }
}
object {
intersection {
object { HalfBoing pigment { color <1, .2, .2> } }
object { HalfBoing pigment { color <1, 1, 1> } rotate <0, CircFreq*0.5, 0>
}
}
bounded_by {sphere {0, 2.2}}
}
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 <web.422bc2902685c12fe6ef12d50@news.povray.org>,
"X-Caliber" <nomail@nomail> wrote:
>>I want to create a faceted checkered sphere (much along the lines of the
>>Amiga "Boing!" ball).
>>
>>To do this I figure I'd take a sphere, build a several rings of boxes (one
>>for each vertical level of facets, eight I guess), each ring rotationally
>>staggered from the one above/below (I figure seven boxes per ring, so each
>>staggered ring would be rotated along the vertical axis by 1/14th of a full
>>rotation), and then this superstructure would be merged together, given one
>>set of attributes to cut into the sphere with, spun 1/14th a turn, and cut
>>again with another set of attributes.
>>
>>I could be pretty far ahead of myself here though, as I don't really know
>>how to do any of that. :-)
hi,
have a look in povray.binaries.images.
and yes, it's a mesh {}.
klp
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) |
kurtz le pirate <kur### [at] yahoo fr> wrote:
> X-Caliber wrote:
> >>I want to create a faceted checkered sphere (much along the lines of the
> >>Amiga "Boing!" ball).
>
> hi,
>
> have a look in povray.binaries.images.
> and yes, it's a mesh {}.
Cool. That could be a decent disco ball. :-)
Can alternating face attributes be easily set to it?
Is there a bit of iterating script in there to generate the mesh? (the long
version of my Boing! description begs for some nested loop goodness, though
the smaller version I posted seems to render about 21% faster, I'm too lazy
to verify at the moment though).
I'm also curious to see mesh code.
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 <web.422e1ecf1e707c60e6ef12d50@news.povray.org>,
"X-Caliber" <nomail@nomail> wrote:
>>kurtz le pirate <kur### [at] yahoo fr> wrote:
>>> X-Caliber wrote:
>>> >>I want to create a faceted checkered sphere (much along the lines of the
>>> >>Amiga "Boing!" ball).
>>>
>>> hi,
>>>
>>> have a look in povray.binaries.images.
>>> and yes, it's a mesh {}.
>>
>>Cool. That could be a decent disco ball. :-)
>>
>>Can alternating face attributes be easily set to it?
>>
>>Is there a bit of iterating script in there to generate the mesh? (the long
>>version of my Boing! description begs for some nested loop goodness, though
>>the smaller version I posted seems to render about 21% faster, I'm too lazy
>>to verify at the moment though).
>>
>>I'm also curious to see mesh code.
no problem. give me a valid email.
klp
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) |
X-Caliber wrote:
> I dunno how to do it meshwise, so I ended up with an object intersection
> define of 56 planes which gets intersected with itsself later on. Heres the
> short version...
Seeing a demo of nested #whiles, I achieved major code shrinkage again. And
this time the facet count can be changed in either direction with some
#defines.
Thanks Bancquart Sebastien for posting your code!
camera {
location <1, 2.5, 4>
look_at <0, 0, 0>
}
light_source { <5, 5, 3> color <1, 1, .8> }
light_source { <-5, 0, 3> color <1, .8, 1> }
light_source { <5, 0, -3> color <.8, 1, 1> }
background {}
#declare CircCount = 14;
#declare VertCount = 8;
#declare HalfBoing = intersection { #declare a=VertCount;
#while (a>0) #declare a=a-1; #declare b=CircCount;
#while (b>0) #declare b=b-1;
plane { z, 2 rotate <180/VertCount*(a+0.5)-90, 720/CircCount*(b+
(a/2-int(a/2)) ), 0> }
#end #end }
object {
intersection {
object { HalfBoing pigment { color <1, .2, .2> } }
object { HalfBoing pigment { color <1, 1, 1> } rotate <0, 360/CircCount,
0> }
}
bounded_by {sphere {0, 2.2}}
}
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) |
X-Caliber wrote:
> Seeing a demo of nested #whiles, I achieved major code shrinkage again. And
> this time the facet count can be changed in either direction with some
> #defines.
....and quadrupling both defines leads to amazingly long render times.
(2 minutes becomes 13 hours)
If I ever plan on using high counts (I don't actually) using a mesh may be
really necessary.
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) |
X-Caliber wrote:
>
> ....and quadrupling both defines leads to amazingly long
> render times.
>
> (2 minutes becomes 13 hours)
13 hours for four times as many? Try Forty times as many.
Expect a few minutes to parse this, but you'll be shocked at the render
speed. No camera or lights here, so don't forget to add your own.
// each square looks like v0 v1
// v2 v3
#local dA = 240; // latitiude
#local dO = 480; // longitude
mesh {
#local cA = 0; #while ( cA < dA )
#local cO = 0; #while ( cO < dO )
// rotate corners into place
#local v0 = vrotate(<0,1,0>, <180*(cA+0)/dA,360*(cO+0)/dO,0>);
#local v1 = vrotate(<0,1,0>, <180*(cA+0)/dA,360*(cO+1)/dO,0>);
#local v2 = vrotate(<0,1,0>, <180*(cA+1)/dA,360*(cO+0)/dO,0>);
#local v3 = vrotate(<0,1,0>, <180*(cA+1)/dA,360*(cO+1)/dO,0>);
// select a color
#if ( mod ( cO+cA, 2 ) = 1 )
#local myTex = texture { pigment { rgb <1,0,0> } }
#else
#local myTex = texture { pigment { rgb <1,1,1> } }
#end
// fill in the boxes with triangles
#if ( cA > 0 ) // not at the top
triangle { v0, v1, v3 texture { myTex } }
#end
#if ( cA < dA-1 ) // not at the bottom
triangle { v0, v3, v2 texture { myTex } }
#end
#local cO = cO + 1; #end
#local cA = cA + 1; #end
}
// -Shay
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) |