[Bf-committers] GSoC 201 - Automatic Skeleton Extraction

Patrick Shirkey pshirkey at boosthardware.com
Tue Apr 30 21:36:33 CEST 2013


On Wed, May 1, 2013 4:42 am, Alexander Pinzon Fernandez wrote:
> The method is fully automatic.

It's a very advanced method :-)

> The method generates a new skeleton from a mesh of polygons.

How do you deal with cases for example linking the hip to the ankle where
there is a joint in the middle but no obvious marker to split the bone/s?
Or a circular/curved mesh?

> The method links the skeleton and mesh.
> The method does not use any sample skeleton.
> The proposed method provides only the skeleton, and the artist will have
> to animate the skeleton.

In the case of automating the animation process it will require building
up an archive of new animations for the new skeleton/s. So it might be
useful to have a hybrid system with some default skeletons.

>
>
>
> 2013/4/30 Nathan Vegdahl <cessen at cessen.com>
>
>> > It would look like makehuman
>>
>> Eh... I think I may be a bit confused.  The proposal is about
>> automatically generating skeletons for an arbitrary model, but it
>> sounds like the workflow you outlined doesn't automate that step at
>> all.  What you've outlined is still cool, but it sounds orthogonal to
>> what is currently being discussed, unless I'm misunderstanding
>> something...?
>>
>> Moreover, unless I'm mistaken, Makehuman is specific to bipedal
>> characters with roughly human characteristics.  Whereas the intent of
>> the original proposal (unless I'm misunderstanding it) is to function
>> for any morphology.
>>
>> --Nathan
>>
>>
>>
>> On Tue, Apr 30, 2013 at 12:18 AM, Patrick Shirkey
>> <pshirkey at boosthardware.com> wrote:
>> >
>> > On Tue, April 30, 2013 12:54 pm, Nathan Vegdahl wrote:
>> >> For something like this to be really useful, I think it needs to be
>> >> user-guide-able.  And even then, it would mostly be useful for
>> >> background characters, not hero characters (which need fine tuning by
>> >> an artist).
>> >>
>> >> I can imagine this being useful, for example, for fully automatic
>> >> rigging of a crowd's worth of background characters.  But it would
>> >> need to take guidance from the user regarding the style and
>> morphology
>> >> of the characters, and the topology, naming scheme, and alignment of
>> >> the skeleton to be generated.  And honestly, I haven't a clue what
>> >> that would look like.
>> >>
>> >
>> > It would look like makehuman
>> >
>> >> In general, building base skeletons is not the bottleneck of rigging
>> >> characters anyway.  And even if you want to make that faster, just
>> >> having better/faster tools for doing it manually would get you more
>> >> bang for your buck than automatic generation, I suspect.
>> >>
>> >
>> > Animating models is the current bottle neck. This is how I have
>> achieved
>> > it with a limited amount of success:
>> >
>> >
>> > 1: Create mesh and apply xonotic rig in makehuman
>> > 2: export model and rig to mhx with "Feet on Ground"
>> > 3: open blender
>> > 4: install iqe/qim exporter
>> > 5: install makehuman tools and mhx importer
>> > 6: import mhx to blender
>> > 7: export iqe of model/rig from blender
>> > 8: find and download original official xonotic model blend file
>> > 9: Open with blender
>> > 10: export model/rig/anims to iqe
>> > 11: open both iqe files in a text editor
>> > 12: extract anims from official xonotic models iqe file
>> > 13: add anims from official xonotic model to makehuman xonotic model
>> > 14: save mh iqe file
>> > 15: build iqm convertor tool from source
>> > 17: run iqm convertor tool on mh iqe file to create animated iqm file
>> > 18: import iqm file to external 3d game engine (cube2)
>> >
>> > cube2 import steps
>> > 19: Place xxx.iqm file in packages/models/xxx  folder where xxx is the
>> > name of the model
>> > 20: add iqm.cfg file and edit with correct commands for loading the
>> iqm
>> > 21: add the model name and location to the map.cfg file
>> > 22: load the map in coop edit mode
>> > 23: load the model with the "newent mapmodel i" where i is the
>> numerical
>> > position of the model in the model list
>> >
>> > additional steps for using animated model in cube2
>> >
>> > 24: make changes to some hardcoded function variables to allow loading
>> new
>> > animated playermodels
>> > 25: add new playermodel to the game config
>> > 26: load animated model as a playermodel or bot in coop edit mode
>> >
>> >
>> > End result:
>> >
>> > http://iguanapro.com/cube/mh4-2.png
>> > http://iguanapro.com/cube/mh4-3.png
>> > http://djcj.org/video/goblin-demo.mpeg
>> >
>> >
>> > It's a very manual process and not very workable if building a crowd
>> of
>> > models in the thousands or hundreds of thousands like for ex. Massive
>> from
>> > Weta can do
>> >
>> > There are also issues with scaling and position of the center of
>> origin
>> > between models. In this specific case cube2 doesn't (obviously)
>> support
>> > changing the center of origin of a model so it has to be handled
>> before
>> > exporting from mh/blender. I could not find an obvious method or
>> tutorial
>> > for changing the center of origin on a blender model. MH allows
>> changing
>> > it at export from origin at hips to feet on ground.
>> >
>> > To cutdown on a lot of manual steps it looks like the way to go is to
>> add
>> > an iqe exporter to MH and
>> > export the blend animations/rigs to bvh for inclusion in MH assets
>> > archive. Then everything can be applied in MH before exporting to iqe
>> > cutting out around 10 steps in the process. FYI, I am working on the
>> MH
>> > iqe exporter at the moment.
>> >
>> >
>> > --
>> > Patrick Shirkey
>> > Boost Hardware Ltd
>> >
>> >
>> >
>> >> --Nathan
>> >>
>> >>
>> >> On Thu, Apr 25, 2013 at 9:02 AM, Alexander Pinzon Fernandez
>> >> <apinzonf at gmail.com> wrote:
>> >>> Automatic Skeleton Extraction
>> >>>
>> >>> Alexander Pinzon Fernandez
>> >>>
>> >>> Email: apinzonf at gmail.com
>> >>>
>> >>>
>> >>> Short description:
>> >>>
>> >>> The character animation is generally done with skeletons that
>> control
>> >>> each
>> >>> joint in the character which drastically simplifies the animation
>> >>> process.
>> >>> The construction of the skeleton given a polygon mesh is a task
>> >>> typically
>> >>> performed by an artist. This project proposes to implement a method
>> for
>> >>> extracting the skeleton automatically given a polygon mesh.
>> >>>
>> >>>
>> >>>
>> >>> *Name*: Alexander Pinzon Fernandez
>> >>>
>> >>> *Email*: apinzonf at gmail.com
>> >>>
>> >>> *IRC*: apinzonf
>> >>>
>> >>> *www*: http://apinzonf.wordpress.com/,
>> >>> http://wiki.blender.org/index.php/User:Apinzonf
>> >>>
>> >>> *Additional Contact Info*
>> >>>
>> >>> *Phone*: +57 300 2 92 74 30
>> >>>
>> >>> *Physical Address*: Cr 81 H No 42a-58 sur Bogota-Colombia
>> >>>
>> >>>
>> >>> Synopsis
>> >>>
>> >>> The character animation is generally done with skeletons that
>> control
>> >>> each
>> >>> joint in the character which drastically simplifies the animation
>> >>> process.
>> >>> The construction of the skeleton given a polygon mesh is a task
>> >>> typically
>> >>> performed by an artist. This project proposes to implement a method
>> for
>> >>> extracting the skeleton automatically given a polygon mesh.
>> >>>
>> >>> This method iteratively contracts the shape in the reverse direction
>> of
>> >>> the
>> >>> curvature flow, with a constraint that forces the contracted model
>> will
>> >>> closely match the original. In each iteration eliminates details.
>> After
>> >>> the
>> >>> model volume is close to zero is passed to the next stage in which
>> >>> through
>> >>> a special surface simplification method removes vertices to obtain a
>> 1D
>> >>> structure.
>> >>>
>> >>> Paper used:
>> >>>
>> >>> AU, Oscar Kin-Chung, et al. Skeleton extraction by mesh contraction.
>> >>> ACM
>> >>> Transactions on Graphics (TOG). ACM, 2008. p. 44.
>> >>>
>> >>>
>> >>> Benefits to Blender
>> >>>
>> >>> This project proposes a new tool for blender user that requires
>> extract
>> >>> the
>> >>> skeleton of polygon meshes.
>> >>>
>> >>> This method allows to obtain the skeleton of a polygon mesh quickly
>> and
>> >>> automatically.
>> >>>
>> >>> This method is insensitive to noise because it uses a smoothing
>> >>> algorithm
>> >>> for contraction which removes the noise and detail in each
>> iteration.
>> >>>
>> >>>
>> >>> Deliverables
>> >>>
>> >>>    1. A new skeleton extraction tool for Blender.
>> >>>    2. Some pages of documentation to be included in the manual
>> >>>    3. A technical document for developers to improve the method in
>> the
>> >>>    future.
>> >>>    4. A tutorial explaining the use of the tool.
>> >>>
>> >>>
>> >>> Project Details
>> >>>
>> >>> The project would divide into seven parts:
>> >>>
>> >>>    1. Iteratively contracting the mesh until the volume is close to
>> >>> zero.
>> >>>    2. Simplifying polygon mesh to obtain a 1D structure (skeleton).
>> >>>    3. Relocating skeleton nodes in the center of each segment.
>> >>>    4. Create vertex groups for each node of the skeleton.
>> >>>    5. Converting a 1D polygon mesh into an armature.
>> >>>    6. Link vertex groups to bones of the armature.
>> >>>    7. Generation of the documentation and tutorials.
>> >>>
>> >>>
>> >>> Project Schedule
>> >>>
>> >>>    - *2 Weeks:-           May 27 – Jun 09:* Iteratively contracting
>> the
>> >>>    mesh until the volume is close to zero.
>> >>>    - *3 Weeks:-           Jun 10 – Jun 31:* Simplifying polygon mesh
>> to
>> >>>    obtain a 1D structure (skeleton).
>> >>>    - *2 Weeks:-           Jul 01 – Jul 14:* Relocating skeleton
>> nodes
>> in
>> >>>    the center of each segment.
>> >>>    - *2 Weeks:-           Jul 15 – Jul 28:* Create vertex groups for
>> >>> each
>> >>>    node of the skeleton.
>> >>>    - *3 Weeks:-           Jul 29 – Aug 18:* Converting a 1D polygon
>> mesh
>> >>>    into an armature.
>> >>>    - *2 Weeks:-           Aug 19 – Sep 01:* Link vertex groups to
>> bones
>> >>> of
>> >>>    the armature..
>> >>>    - *1 Weeks:-           Sep 02 – Sep 08:* Testing the tool and
>> Define
>> >>> and
>> >>>    implement graphical user integration.
>> >>>    - *2 Weeks:-           Sep 09 – Sep 22:* Generation of the
>> >>> documentation
>> >>>    and tutorials.
>> >>>
>> >>>
>> >>> Bio
>> >>>
>> >>> I graduated as systems engineer in Colombia in 2007.
>> >>>
>> >>> I am a MSc computer science student at National University of
>> Colombia.
>> >>>
>> >>> Skeleton extraction and mesh smoothing are the research topics of my
>> >>> MSc. I
>> >>> am use CGAL, Graphite and Qt libraries.
>> >>>
>> >>> Since 2007 I am a member of the Bioingenium Research Group of
>> National
>> >>> University of Colombia.
>> >>>
>> >>> I have been using Blender for about 10 years. I was working on the
>> >>> develop
>> >>> of a operator to remove noise from a mesh at GSOC 2012 – Blender
>> suchi
>> >>> branch “Mesh Smoothing for 3d Scan Data”.
>> >>>
>> >>>
>> >>> WORK EXPERIENCE:
>> >>>
>> >>> 2012 Google Summer of Code – Blender Foundation: “Mesh Smoothing for
>> 3d
>> >>> Scan Data”.
>> >>>
>> >>> 2010 - Scire Foundation, Software Architect:
>> >>>
>> >>> Design and development of web services data, hibernate and oracle.
>> >>>
>> >>> Programming GUI with RichFaces.
>> >>>
>> >>> Library of generic manipulation of trees, based on Java reflection
>> >>> techniques.
>> >>>
>> >>> 2005 - 2007  Sigtech, LTDA, Developer Engineer:
>> >>>
>> >>> SIGC  System  Development  for  the  "Departamento  Administrativo
>> de
>> >>> Catastro  Distrital DACD".
>> >>>
>> >>> Software used in development: Oracle 9i, Visual Basic 6, PL / SQL
>> >>> Developer.
>> >>>
>> >>> 2004 -2005  IIE and Colciencias, Student Monitor research:
>> >>>
>> >>> Project: " Theater of Memory in Virtual Worlds:"
>> >>>
>> >>> Architecture for handling streaming video that comes from a digital
>> >>> camcorder and put it as a texture of a 3D plane in a virtual
>> setting,
>> >>> using
>> >>> the Java software, J3D, JMF, VRML, X3D.
>> >>>
>> >>>
>> >>> SOFTWARE DEVELOPED:
>> >>>
>> >>> Nukak3D  http://sourceforge.net/projects/nukak3d
>> >>>
>> >>> 3D medical image platform for visualization and image processing.
>> >>>
>> >>> Nukak3d  is a  flexible architecture  that  integrates
>> general-purpose
>> >>> graphics  libraries such as VTK, ITK, VTKInria3D, OpenGL, under a
>> >>> graphical
>> >>> user interface (wxWidgets)  for three-dimensional visualization and
>> >>> processing of medical images. On C++.
>> >>>
>> >>>  JNukak3D  http://sourceforge.net/projects/jnukak3d
>> >>>
>> >>> Software for three-dimensional visualization of DICOM images based
>> on
>> >>> java.
>> >>>
>> >>>   JVC1394  http://sourceforge.net/projects/jvc1394/
>> >>>
>> >>> Wrapper for the library Libdc1394 to enable communication with the
>> Java
>> >>> programming language. Java Video Capture for IEEE 1394 cameras. On
>> C,
>> >>> C++,
>> >>> Java, Swig.
>> >>>
>> >>>
>> >>> PUBLICATIONS
>> >>>
>> >>> León J., Pinzón A., Sánchez C., Romero E. A distributed plugin based
>> >>> architecture for medical image processing. Proc. SPIE 8674, Medical
>> >>> Imaging
>> >>> 2013: Advanced PACS-based Imaging Informatics and Therapeutic
>> >>> Applications,
>> >>> 867403 (March 29, 2013);doi:10.1117/12.2007180.
>> >>>
>> >>> Pinzón,   A., Leon, J.C., Romero E.,   Diseño y desarrollo de una
>> >>> aplicación web para  la visualización eficiente de imágenes medicas,
>> con
>> >>> procesamiento 3D por software o por hardware. En Seminario
>> Internacional
>> >>> de
>> >>> Procesamiento y Análisis de Imágenes Médicas SIPAIM 2009, (Noviembre
>> >>> 27-27,
>> >>> 2009), Bogotá Colombia.
>> >>>
>> >>> Pinzón  A.,  Romero  E.,  Visualización  3D  de  imágenes  médicas:
>>  una
>> >>> herramienta  Open Source,    En Seminario Internacional de
>> Procesamiento
>> >>> y
>> >>> Análisis de Imágenes Médicas SIPAIM 2008, (Noviembre 24-27, 2008),
>> >>> Bogotá –
>> >>> Colombia.
>> >>>
>> >>> Mendoza,  B.  U.,  Ramos,  G.  A.,  Mendez,  L.  M.,  Santamaria,
>> W.,
>> >>> and  Pinzón,  A.  2006.  Camera  Motion  Control from  a  Java  3D
>> >>> Environment:  Virtual  Studio  Application  in Decorative  Arts
>> Museum
>> >>> Collections.  In Proceedings of  the 2006  international Conference
>> on
>> >>> Cyberworlds  (November 28  - 29, 2006). CW. IEEE Computer Society,
>> >>> Washington, DC, 58-64.
>> >>> _______________________________________________
>> >>> Bf-committers mailing list
>> >>> Bf-committers at blender.org
>> >>> http://lists.blender.org/mailman/listinfo/bf-committers
>> >> _______________________________________________
>> >> Bf-committers mailing list
>> >> Bf-committers at blender.org
>> >> http://lists.blender.org/mailman/listinfo/bf-committers
>> >>
>> >
>> >
>> > --
>> > Patrick Shirkey
>> > Boost Hardware Ltd
>> > _______________________________________________
>> > Bf-committers mailing list
>> > Bf-committers at blender.org
>> > http://lists.blender.org/mailman/listinfo/bf-committers
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>


--
Patrick Shirkey
Boost Hardware Ltd


More information about the Bf-committers mailing list