|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hello,
I had a quick question. I've made this logo seen here:
http://www.wwwmwww.com/images/MyLogo.png
It's a simple prism and starts something like this:
#declare wwwmwww = prism {
linear_sweep
bezier_spline
0, // sweep the following shape from here ...
10, // ... up through here
348, // the number of points making up the shape ...
However instead of cutting this logo out of a sheet, I'd like to cut it out
of a hollow cylinder with some wall thickness. Instead of specifying
basically x and y, I'd like to specify something like theta and y. Think
of it as a laser cutting out the logo as it moves up and down along the
axis of the cylinder and points in the direction of theta. Is that
possible?
I'm not the best at describing what I want but I hope that gets the point
across.
Thanks,
Carl
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Carl nous apporta ses lumieres en ce 09-04-2007 15:31:
> Hello,
> I had a quick question. I've made this logo seen here:
> http://www.wwwmwww.com/images/MyLogo.png
> It's a simple prism and starts something like this:
> #declare wwwmwww = prism {
> linear_sweep
> bezier_spline
> 0, // sweep the following shape from here ...
> 10, // ... up through here
> 348, // the number of points making up the shape ...
> However instead of cutting this logo out of a sheet, I'd like to cut it out
> of a hollow cylinder with some wall thickness. Instead of specifying
> basically x and y, I'd like to specify something like theta and y. Think
> of it as a laser cutting out the logo as it moves up and down along the
> axis of the cylinder and points in the direction of theta. Is that
> possible?
> I'm not the best at describing what I want but I hope that gets the point
> across.
> Thanks,
> Carl
Possible solution, if the desired cylinder have a ralatively large radius:
difference{
object{wwwmwww}
cylinder{<100,0,0><-100,0,0>,20}//must be longer than your prism
//the radius should be reasonably larger that the height of the prism
cylinder{<101,0,0><-101,0,0>,17}//longer to avoid coincident surfaces
texture{YourTexture}
}
Here, the faces are curved, but the sides are still parallel.
Another way, is to use object pattern with a cylindrical warp to project it on a
cylinder. This have the advantage of the sides been perpendicular to the
surface. As this is meant for pigments, it must be converted to a function and
used in an isosurface (extreem max_gradient) or directly as a media density.
Both are slow.
--
Alain
-------------------------------------------------
Lutheran: If shit happens, don't talk about it.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Alain <ele### [at] netscapenet> wrote:
> Possible solution, if the desired cylinder have a ralatively large radius:
> difference{
> object{wwwmwww}
> cylinder{<100,0,0><-100,0,0>,20}//must be longer than your prism
> //the radius should be reasonably larger that the height of the prism
> cylinder{<101,0,0><-101,0,0>,17}//longer to avoid coincident surfaces
> texture{YourTexture}
> }
> Here, the faces are curved, but the sides are still parallel.
>
> Another way, is to use object pattern with a cylindrical warp to project it
> on a cylinder. This have the advantage of the sides been perpendicular to
> the surface. As this is meant for pigments, it must be converted to a
> function and used in an isosurface (extreem max_gradient) or directly as a
> media density. Both are slow.
>
> --
> Alain
Well, ultimately I wanted the logo to wrap 3/4th of the way around the
cylinder. I was then going to animate it orbiting a sphere. So I don't
think the difference with a cylinder method would work. I must confess the
other solution you mention I think is beyond my POV-Ray skill level at the
moment. I'm still learning. Do you think you could make a simple example
so I can see what the code would look like?
Thanks,
Carl
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Carl" <car### [at] semisouthcom> wrote in message
news:web.461a94952a2d760870dc520d0@news.povray.org...
> Hello,
>
> I had a quick question. I've made this logo seen here:
>
> http://www.wwwmwww.com/images/MyLogo.png
>
> It's a simple prism ... snip ... instead of cutting this logo out of a
> sheet,
> I'd like to cut it out of a hollow cylinder with some wall thickness.
> ... snip ...
>
> Thanks,
> Carl
>
Hi Carl,
One approach I've used in the past for this sort of thing is to take slices
of an object (LogoObject), then transform the slices as required.
The example below takes horizontal slices, translates them down to the XZ
plane then rotates them the same distance around the face of a cylinder
centred on the X-axis. This example uses a small number of slices giving a
render time of just a few minutes. When you've got the effect you want you
can reduce the SliceThickness to get the desired quality.
Regards,
Chris B.
camera {location <0, 0,-3.5> look_at <0,0,0>}
light_source { <-50, 50, -30> color rgb <1,1,1>}
light_source { <-50,-50, -30> color rgb <1,0.5,0>}
#declare CylinderRadius = 0.5;
#declare CylinderThickness = 0.1;
#declare SliceThickness = 0.1;
//#declare SliceThickness = 0.01;
#declare CylinderCircumference = 2*pi*CylinderRadius;
#declare LogoObject = text {
ttf // font type (only TrueType format for now)
"crystal.ttf", // Microsoft Windows-format TrueType font file name
"POV-Ray", // the string to create
2, // the extrusion depth
0 // inter-character spacing
translate <-1.7,-0.3,-CylinderRadius>
}
#declare Top = max_extent(LogoObject).y;
#declare Bottom = min_extent(LogoObject).y;
// This makes a curved object
// Make the back surface dead smooth
difference {
// Make the front surface dead smooth
intersection {
cylinder {-2*x,2*x,CylinderRadius}
// Assemble some slices
union {
#local Height = Top;
#while (Height>=Bottom)
intersection {
// Take a thin slice of the object
object {LogoObject}
box {<-2,Height-SliceThickness-0.01,-1>,<2,Height+0.01,0>}
// Drop slice to XY plane
translate (-Height+SliceThickness)*y
// Rotate around surface of the cylinder
rotate x*360*(Height-SliceThickness)/CylinderCircumference
}
#local Height = Height - SliceThickness;
#end
}
}
cylinder {-2*x,2*x,CylinderRadius-CylinderThickness}
pigment {color rgb <1,1,0>}
translate y*0.5
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Carl nous apporta ses lumieres en ce 09-04-2007 16:49:
> Alain <ele### [at] netscapenet> wrote:
>> Possible solution, if the desired cylinder have a ralatively large radius:
>> difference{
>> object{wwwmwww}
>> cylinder{<100,0,0><-100,0,0>,20}//must be longer than your prism
>> //the radius should be reasonably larger that the height of the prism
>> cylinder{<101,0,0><-101,0,0>,17}//longer to avoid coincident surfaces
>> texture{YourTexture}
>> }
>> Here, the faces are curved, but the sides are still parallel.
>> Another way, is to use object pattern with a cylindrical warp to project it
>> on a cylinder. This have the advantage of the sides been perpendicular to
>> the surface. As this is meant for pigments, it must be converted to a
>> function and used in an isosurface (extreem max_gradient) or directly as a
>> media density. Both are slow.
>> --
>> Alain
> Well, ultimately I wanted the logo to wrap 3/4th of the way around the
> cylinder. I was then going to animate it orbiting a sphere. So I don't
> think the difference with a cylinder method would work. I must confess the
> other solution you mention I think is beyond my POV-Ray skill level at the
> moment. I'm still learning. Do you think you could make a simple example
> so I can see what the code would look like?
> Thanks,
> Carl
OK. Logo wraps 3/4 around a vertical cylinder.
In your case, the best way is probably to use some external modeler like Wings
and use the resulting mesh.
The render time will be much faster than that of an isosurface and you can have
specular highlights if you want (impossible with the media solution).
--
Alain
-------------------------------------------------
Honk if you love peace and quiet.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
You might want to look at Chris Colefax's object bender macro,
it's a bit slow, but should be able to do this.
http://www.geocities.com/ccolefax/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
I found a way to do almost what I was after. Check this out:
http://www.wwwmwww.com/images/MyLogo2.png
If this is my original prism:
#declare wwwmwww1 = prism {
linear_sweep
bezier_spline
0, // sweep the following shape from here ...
10, // ... up through here
348, // the number of points making up the shape ...
#declare Ctr = 0;
#while (Ctr < 85.5)
P1[Ctr],C1[Ctr+1],C2[Ctr],P1[Ctr+1],
#declare Ctr = Ctr+1;
#end
P1[Ctr],C1[Ctr+1],C2[Ctr],P1[Ctr+1]
}
Then all I had to do was this:
#declare shell = difference {
sphere {<0,0,0>,1}
sphere {<0,0,0>,0.95}
}
#declare wwwmwww3 = prism {
conic_sweep
bezier_spline
0, // sweep the following shape from here ...
1, // ... up through here
348, // the number of points making up the shape ...
#declare Ctr = 0;
#while (Ctr < 85.5)
<tan(radians(f1*P1[Ctr].x)),
tan(radians(f1*P1[Ctr].y))/cos(radians(f1*P1[Ctr].x))>,
<tan(radians(f1*C1[Ctr+1].x)),
tan(radians(f1*C1[Ctr+1].y))/cos(radians(f1*C1[Ctr+1].x))>,
<tan(radians(f1*C2[Ctr].x)),
tan(radians(f1*C2[Ctr].y))/cos(radians(f1*C2[Ctr].x))>,
<tan(radians(f1*P1[Ctr+1].x)),
tan(radians(f1*P1[Ctr+1].y))/cos(radians(f1*P1[Ctr+1].x))>,
#declare Ctr = Ctr+1;
#end
<tan(radians(f1*P1[Ctr].x)),
tan(radians(f1*P1[Ctr].y))/cos(radians(f1*P1[Ctr].x))>,
<tan(radians(f1*C1[Ctr+1].x)),
tan(radians(f1*C1[Ctr+1].y))/cos(radians(f1*C1[Ctr+1].x))>,
<tan(radians(f1*C2[Ctr].x)),
tan(radians(f1*C2[Ctr].y))/cos(radians(f1*C2[Ctr].x))>,
<tan(radians(f1*P1[Ctr+1].x)),
tan(radians(f1*P1[Ctr+1].y))/cos(radians(f1*P1[Ctr+1].x))>
}
#declare wwwmwww = intersection {
object {shell}
object {wwwmwww3}
}
In fact I think I like this more then what I was after. However I'm
surprised that if its this easy to cut my logo from a sphere that it seems
so much harder to cut it out of a cylinder.
Thanks,
Carl
P.S. f1 above is just a scaling factor used to convert the original x and y
values into degrees. Also note this method can only be used to wrap the
logo half way around the sphere. I think if I break the logo up into 2
prisms though I can get more then 180 degree coverage.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|