|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Zeger Knaepen wrote:
> I'm not really sure I understand it completely :-/
>
> cu!
I thought about something like this (never tried, so maybe doesn't work
at all):
1. declare your blobs defining the single muscles
#declare blob_object_1 = blob{....}
#declare blob_object_2 = blob{....}
.
.
.
#declare blob_object_n = blob{....}
2. declare functions based on object-patterns using the formerly
declared blobs like this:
#declare bf_1 = function{pigment{object{blob_object_1 color rgb 0, color
rgb 1}}};
#declare bf_2 = function{pigment{object{blob_object_2 color rgb 0, color
rgb 1}}};
.
.
.
#declare bf_n = function{pigment{object{blob_object_n color rgb 0, color
rgb 1}}};
3. now skin them using somthing to "blob" functions together like in the
docs:
#declare blob_threshold = 0.001;
#declare skin = function {
(1+Blob_threshold)
-pow(Blob_threshold, bf_1(x,y,z).gray)
-pow(Blob_threshold, bf_1(x,y,z).gray)
.
.
.
-pow(Blob_threshold, bf_1(x,y,z).gray)
}
and use this function inside an isosurface-container large enough
... dave
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"David El Tom" <dav### [at] t-onlinede> wrote in message
news:43bbb899@news.povray.org...
> Zeger Knaepen wrote:
> > I'm not really sure I understand it completely :-/
> >
> > cu!
>
> I thought about something like this (never tried, so maybe doesn't
work
> at all):
>
>
> 1. declare your blobs defining the single muscles
>
> #declare blob_object_1 = blob{....}
> #declare blob_object_2 = blob{....}
> .
> .
> .
> #declare blob_object_n = blob{....}
>
> 2. declare functions based on object-patterns using the formerly
> declared blobs like this:
this step is a problem: object-patterns are binary, either a point is
inside the object or it's on the outside, which makes them not suitable
for isosurfaces :-/
cu!
--
#macro G(b,e)b+(e-b)*C/50#end#macro _(b,e,k,l)#local C=0;#while(C<50)
sphere{G(b,e)+3*z.1pigment{rgb G(k,l)}finish{ambient 1}}#local C=C+1;
#end#end _(y-x,y,x,x+y)_(y,-x-y,x+y,y)_(-x-y,-y,y,y+z)_(-y,y,y+z,x+y)
_(0x+y.5+y/2x)_(0x-y.5+y/2x) // ZK http://www.povplace.com
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Zeger Knaepen wrote:
>>2. declare functions based on object-patterns using the formerly
>>declared blobs like this:
>
> this step is a problem: object-patterns are binary, either a point is inside the
object or it's on the outside, which makes them not suitable for isosurfaces :-/
>
> cu!
ah, ok I'see the point
... have to think about if it's possible to transform a blob which
elements have a spherical pattern into a single pigment.
This, I think, could solve the binary problem. Have to go into docs
again ...
... dave ...
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"David El Tom" <dav### [at] t-onlinede> wrote in message
news:43bc13bb$1@news.povray.org...
> Zeger Knaepen wrote:
>
> >>2. declare functions based on object-patterns using the formerly
> >>declared blobs like this:
> >
> > this step is a problem: object-patterns are binary, either a point
is inside the object or it's on the outside, which makes them not
suitable for isosurfaces :-/
> >
> > cu!
>
> ah, ok I'see the point
>
> ... have to think about if it's possible to transform a blob which
> elements have a spherical pattern into a single pigment.
> This, I think, could solve the binary problem. Have to go into docs
> again ...
MegaPOV used to have a blob-pattern, but for some reason the latest
version doesn't have it anymore :(
cu!
--
#macro G(b,e)b+(e-b)*C/50#end#macro _(b,e,k,l)#local C=0;#while(C<50)
sphere{G(b,e)+3*z.1pigment{rgb G(k,l)}finish{ambient 1}}#local C=C+1;
#end#end _(y-x,y,x,x+y)_(y,-x-y,x+y,y)_(-x-y,-y,y,y+z)_(-y,y,y+z,x+y)
_(0x+y.5+y/2x)_(0x-y.5+y/2x) // ZK http://www.povplace.com
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Zeger Knaepen wrote:
> Second problem: I can't do it with 1 blob, because limbs
> would blob together if they get too close to each other.
> But if I do it in different blob-objects, the seams are
> visible :-/ Anyone has an idea how to solve this? :-/
To model muscles, you are probably going to have to model bags of goo
that push against each other, and completely abandon blobs altogether.
Regards,
John
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
>
> MegaPOV used to have a blob-pattern, but for some reason the latest version doesn't
have it anymore :(
>
> cu!
at least I found a way to fake a blob pattern via usage of functions:
<<<<SNIPPET-START>>>>
//"prove of principle" - blob pattern-function
// number of blob components
#declare blob_component_count = 3;
// arrays holding strength, radius and position for each component
#declare blob_strength = array[blob_component_count];
#declare blob_radii = array[blob_component_count];
#declare blob_positions = array[blob_component_count];
// fill these arrays with something
#declare blob_strength[0]=1.0;
#declare blob_strength[1]=1.2;
#declare blob_strength[2]=-.5;
#declare blob_radii[0] =1.3;
#declare blob_radii[1] =1.3;
#declare blob_radii[2] =1.0;
#declare blob_positions[0] = <-.8,0,0>;
#declare blob_positions[1] = <.8,0,0>;
#declare blob_positions[2] = <.0,.3,0>;
#declare counter = 0;
#declare blob_fcn =
function
{
#while (counter < blob_component_count)
#local x_pos = blob_positions[counter].x;
#local y_pos = blob_positions[counter].y;
#local z_pos = blob_positions[counter].z;
#local radius_squared = pow(blob_radii[counter],2);
#if (counter > 0)
+
#end //if
(blob_strength[counter] *
pow((1.0-min(1,((pow((x-x_pos),2)+pow((y-y_pos),2)+pow((z-z_pos),2))/radius_squared))),2))
#declare counter= counter +1;
#end // while
}
plane
{
z,0
pigment
{
function{min(1,max(0,blob_fcn(x,y,z)))}
color_map
{
[0 rgb 0]
[0.2 rgb <1,0,0>]
[0.4 rgb <0,1,0>]
[0.6 rgb <0,0,1>]
[0.8 rgb <0,1,1>]
[1 rgb 1]
}
ramp_wave
}
}
<<<<SNIPPET-END>>>>
... dave
Post a reply to this message
Attachments:
Download 'blob_fcn.png' (26 KB)
Preview of image 'blob_fcn.png'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Bob Hughes" <omniverse@charter%net> wrote:
> Freaky stuff, Zeger. I'm sure that couldn't be an easy thing to animate.
> Reminds me the people Greg Johnson has created over the past few years but I
> don't remember how he actually makes those guys.
>
First of all, I have a complicated transform that takes anything associated
with a particular limb from Position(time_zero construction) to
Position(function of various movement parameters, including of course IK,
etc.).
Then as far as construction goes, consider the character shown at:
http://news.povray.org/povray.binaries.animations/thread/%3C437563c5%40news.povray.org%3E/
Except for two eyeball-spheres, twenty individual blob-teeth and a
blob-tongue, and a blob-hairdo, the entire figure is one blob. The hands
have blob components of strength like 200 or something-- ugly looking
cylinders.
Then for construction of the arm, take for example say the bicep-bone.
First of all, I have cylinders that do not go all the way to the joints,
and then spheres at the joints. This prevents the spiking which would
otherwise occur. I believe it also reduces the merging together of
bicep-muscle with fore-arm bone.
Then I represent a muscle with one or more elongated spheres. Any
muscle-bulging that then occurs with arm-bending is an unintended benefit.
Also consider super-low and super-high strength components in your
experimentation.
I've also not shied away from obtaining a pliable shape via an overkill
number of blob components. Most of my faces are made with a stack of
fourty to seventy flattened spheres. If I then rotate only the bottom 1/3
of them, I've thereby created a moving jaw.
But John v.S. ultimately had the answer. Stay away from blobs. (I'd say
even stay away from povray.) As a winner of an IRTC anim contest once
said, using povray for character animation must be a complete waste of
time.
Greg
http://pterandon.blogspot.com/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|