POV-Ray : Newsgroups : povray.advanced-users : Deforming meshes to bones Server Time
29 Jul 2024 18:16:27 EDT (-0400)
  Deforming meshes to bones (Message 1 to 5 of 5)  
From: Rune
Subject: Deforming meshes to bones
Date: 18 Dec 2000 11:02:45
Message: <3a3e3525@news.povray.org>
Where can I find information about how polygons and/or patches are deformed
together with the bones they're attached to? What is it that controls how
much a point is affected by BoneA and how much it is affected by BoneB? What
are the calculations? And so on...

I know bones are not internally supported by POV-Ray, but I need the info
for my own project I'm working on.

Thanks,

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 December 17)
/ Also visit http://www.povrayusers.org


Post a reply to this message

From: Ben Birdsey
Subject: Re: Deforming meshes to bones
Date: 28 Dec 2000 01:54:09
Message: <3A4AE430.BCC49ACB@mail.com>
I recently read an article in a book about 3D Studio Max.  The book I
read was in the University bookstore, but I'm sure that Barnes & Noble
or some other big chain store will have something similar.  Basically,
it said that the deformation at each mesh point was a weighted sum of
the deformations due to each bone.

	I guess the trick is to determine what the weights are.  The automatic
method they outlined in the book had to do with assigning the weights by
comparing the values of some ellipsoidal density function (kinda like
the method used to calculate the density function for blobs, so you can
determine the surface with a threshold.)

	That sounds simple enough, but they admitted that no matter how well
you calculate the weighting, there will still be a crease near the joint
of 2 bones if the deformation is large.

	I hope that helps.

	Ben
	<><


Post a reply to this message

From: Rune
Subject: Re: Deforming meshes to bones
Date: 28 Dec 2000 11:25:45
Message: <3a4b6989@news.povray.org>
"Ben Birdsey" wrote:
> the deformation at each mesh point was a weighted sum of the
> deformations due to each bone.

That's what I thought of too. Actually my 2 next questions "Matrix question"
and "Distance to line segment?" was related to this.

> I guess the trick is to determine what the weights are.
> The automatic method they outlined in the book had to do with
> assigning the weights by comparing the values of some
> ellipsoidal density function

My approach is something similar, though probably not as sophisticated.

The problem I'm having now is how to handle all the information. For every
single point in the mesh the weights for the different deformations have to
be found. It's a lot of data, and it takes a while to calculate. Either the
calculations must be done for every frame in the animation (which is very
slow), or they'll have to be stored somehow (but how?). None of the two
options seem nice to me, so I don't really know what to do...

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 December 17)
/ Also visit http://www.povrayusers.org


Post a reply to this message

From: Ken
Subject: Re: Deforming meshes to bones
Date: 28 Dec 2000 11:30:44
Message: <3A4B6AB9.C4EE0AE2@pacbell.net>
Rune wrote:

> None of the two options seem nice to me, so I don't really know what to do...

Buy a GUI based modelling program with integrated 'bones' support ?

-- 
Ken Tyler


Post a reply to this message

From: Ben Birdsey
Subject: Re: Deforming meshes to bones
Date: 28 Dec 2000 17:26:49
Message: <3A4BBECA.6B3D7055@mail.com>
I am just trying to think this problem out for myself.  I am thinking
that you could modify the mesh syntax so that it can accept weight
values in a way that's similar to the way that mesh assigns vertex
normals.


mesh2 {
  vertex_vectors {
    number_of_vertices,
    <vertex1>, <vertex2>, ...
  }

  bones {
    number_of_bones,
    <start 1>, <end 1>,
    <start 2>, <end 2>, ...
  }

  weights {
    number_of_weights,
    <weight1>, <weight2>, ...
  }

  bones_weights{
    number_of_vertices,
    <index a, index b, index c>,
    <index d, index e, index f>,
    ....
  }

  ...

}

where the weight vector would determine the influence, and the
bones_weights array would tell you which bone the weights belonged to.

	To calculate the mesh positions:
		- calculate the transformations to
		  the mesh for each bone
		- generate an ordinary mesh that where the
		  position of each vertex is the weighted
		  average of the position of that vertex
		  for each transformation


   
	You know, I think that the idea of bones is a lithe bit over-rated. 
Generally you want to use them to calculate smooth deformations at
joints, but it is pretty computationally expensive and it doesn't work
well for large deformations anyway.

	There are other methods out there that might work better.  In fact that
book that mentioned bones also mentioned using a NURM, which does
something like the mesh smoother macro that was developed for POV.  So,
you could use bones for a really coarse mesh that you could smooth to
get your final shape!

	Just an idea.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.