Jump to content


Photo

Grumbles from the Modder's Workshop


  • Please log in to reply
7 replies to this topic

#1 jamoram62

jamoram62

    Master Director

  • Members
  • 787 posts
  • Gender:Male
  • Location:3724'21.05"N 00559'14.69"W

Posted 01 November 2017 - 01:28 PM

This is a thread purposely dedicated to complaints, rants or simply discussions, but specifically about those annoying issues and limitations found by modders in their work every day, that define the envelope or boundaries for the modding endeavours, and which will hopefully be fixed in upcoming versions of Moviestorm.

 

In any case, a constructive attitude is called for.

 

So I will start this thread with an issue I researched some time ago, put it aside because of my atention was called for other subjects, and I have revisited only in the last days.

 

You may know by now that the shape of almost every aspect of the look of your characters/puppets is or can be modified or morphed to a more or less large extent.  All these assets (bodies, heads, hair, beards, accessories)  are included in a large category globally known as "bodyparts", and they all have a few common defining characteristics and properties, but probably the most important is that they all are rigged to the puppet skeleton and, thus, won't accept any specific animation.

 

For example, there are a few of morphable bodies or dresses, like those created by Chris Ollie, 3DTree or Squirrelygirl:

 

Attached File  Morphable body.jpg   78.86KB   0 downloads

 

No need to mention faces, probably the most configurable bodypart. There are also the large category of decals: they use to be tintable and re-positionable, but they're a completely different animal.

 

On the other hand, there are only few examples of morphable hairstyles and beards, like those by AVK or Chris Ollie:

 

Attached File  Morphable hair.jpg   105.35KB   0 downloads

 

Now, there is a third kind of assets included in the "bodyparts" super-class: the accessories.  There's something I've always found irritating about accessories, both as a modder and as a user: AFAIK they can't be organized in collections and, my real complain, they can't be morphed, so their position and size can't be modified by the user to match the particular character they're attached to.

 

I've been trying to create a working morphable accessory, but the most I've got is something like this:

 

Attached File  Morphable accessory full.jpg   89.55KB   0 downloads

 

It's a simple accessory, a semispheric bonnet or cap, for which I created a few morph meshes and put together a definition file, according to the template for a morphable bodypart:

<mscope.things.BodyPart class="mscope.things.BodyPart$MorphPart">
  <baseMesh>Accessories/MorphSphere/base</baseMesh>
  <partsCovered class="enum-set" enum-type="mscope.things.BodyPart$Category">ACCESSORY</partsCovered>
  <name>MorphSphere</name>
  <description></description>
  <slot>0</slot>
  <tags/>
 
  <morphTargets>
    <mscope.things.BodyPart_-MorphTarget>
      <mesh>Accessories/MorphSphere/large</mesh>
      <region>FULL</region>
      <menuName>Large</menuName>
    </mscope.things.BodyPart_-MorphTarget>
    <mscope.things.BodyPart_-MorphTarget>
      <mesh>Accessories/MorphSphere/high</mesh>
      <region>FULL</region>
      <menuName>High</menuName>
    </mscope.things.BodyPart_-MorphTarget>
    <mscope.things.BodyPart_-MorphTarget>
      <mesh>Accessories/MorphSphere/wide</mesh>
      <region>FULL</region>
      <menuName>Wide</menuName>
    </mscope.things.BodyPart_-MorphTarget>	
    <mscope.things.BodyPart_-MorphTarget>
      <mesh>Accessories/MorphSphere/up</mesh>
      <region>FULL</region>
      <menuName>Up</menuName>
    </mscope.things.BodyPart_-MorphTarget>		
    <mscope.things.BodyPart_-MorphTarget>
      <mesh>Accessories/MorphSphere/front</mesh>
      <region>FULL</region>
      <menuName>Front</menuName>
    </mscope.things.BodyPart_-MorphTarget>		
    <mscope.things.BodyPart_-MorphTarget>
      <mesh>Accessories/MorphSphere/back</mesh>
      <region>FULL</region>
      <menuName>Back</menuName>
    </mscope.things.BodyPart_-MorphTarget>	
  </morphTargets> 

  <meshes>
    <string>Accessories/MorphSphere/base</string>
  </meshes>
  <materials>
    <entry>
      <int>0</int>
      <list>
        <material>
          <name>Accessories/MorphSphere/Sphere [0]</name>
          <ambientColor>0.0 0.0 0.0 0.99609375</ambientColor>
          <diffuseColor>0.0 0.0 0.0 0.99609375</diffuseColor>
          <emissiveColor>0.0 0.0 0.0 1.0</emissiveColor>
          <specularColor>0.0 0.0 0.0 1.0</specularColor>
          <shininess>8.0</shininess>
          <maps/>
          <parameters/>
        </material>
      </list>
    </entry>
  </materials>  

  <bindings>
    <boneBindings/>
  </bindings>
</mscope.things.BodyPart>

As a matter of fact, this is only one of the many approaches I've tried. My first idea was to link every variant to a different morphing region, and so I did, but the result was the same: when selected, one and only one morphing slider control shows up, but the morphing cursor/selector is missing.

 

So I went for a more simple and unsatisfactory solution: a unique slider control for the FULL morphing region, but no progress was made: still no morphing cursor.

 

Analyzing the log file when selecting the experimental morphing accessories, a large number of exception messages are found, related to an error when the morphing slider control is going to be displayed:

Error while drawing component swingx.TransparentPanel[,0,0,1280x972,layout=mscope.ui.scenario.HUDLayout$1,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]
java.lang.NullPointerException
	at mscope.ui.charactershop.FeatureMorpher$FeatureSliderUI.paintThumb(FeatureMorpher.java:376)
	at javax.swing.plaf.basic.BasicSliderUI.paint(BasicSliderUI.java:918)
	at mscope.ui.charactershop.FeatureMorpher$FeatureSliderUI.paint(FeatureMorpher.java:350)
...

No wonder the slider cursor does not appear at all! Trying to display it wreaks havoc in the related code.

 

Replacing the FULL morphing region by other possible candidates, such as BASE or VARIANT1 was useless: the region icon changes but still no cursor:

 

Attached File  Morphable accessory variant1.jpg   62.52KB   0 downloads

 

Maybe I'm missing anything and some workaround is feasible, but as of this date I get the impression  the class accessory extending the superclass bodypart has no morphing region associated/defined, so objects in that class can't be morphed at all.

 


ars longa vita brevis - Hippocrates (attributed)
 
If you want to tell jokes then use Muvizu; if you want to make 'Movies', use iClone; but if you want to tell stories, use Moviestorm - PrimaveraNZ
 
Shared addons & stuff for Moviestorm: https://drive.google...aTNsSFBuN0sxZHM


#2 jamoram62

jamoram62

    Master Director

  • Members
  • 787 posts
  • Gender:Male
  • Location:3724'21.05"N 00559'14.69"W

Posted 01 November 2017 - 03:23 PM

Held props. We do love them and are eager for new amazing held props.

 

However, in its current state, there are a few limitations in Moviestorm specifically related to held props:

 

1. Although theoretically a held prop could be bound to a number of different "grabbing" bones (including both hands and feet, head, jaw, mouth, neck, breast and pelvis), only two of them are actually working: left hand and righ hand. Should any other "holding" bone be selected, it will be reverted in practice to R_HAND (right hand).

 

2. At any moment, only one held object can be active for each of the holding bones.

 

Try this: place Mr Star and instruct him to get the mobile phone, answer the phone, leave an interval of, say, 5-10 seconds with no actions and then add another animation such as taking a photo. Now position the cursor in the time line in the blank interval you left and tell him to use and draw one of the held guns. Now run the sequence: Mr Star will produce a phone, take it to his ear, suddenly the phone disappears and he draws the gun and a few seconds later the gun is magically gone and the phone reappears.

 

Well, I know the example is a bit extreme and, in real life, you are not expected to hold a phone and a gun at the same time in your right hand. But let's supose that instead of a phone and a gun, we have a held, fully animated, wristwatch bound to the puppet's left hand, It looks great. But now Mr. Star picks a suitcase with his left hand and, hello, the wristwatch is gone!

 

When I was working on my animated wristwatch, my original idea was to implement it as three separate animated held objects, all of them "held" or associated to the left hand (the watch body plus the second hand, the hour hand and the minute hand). It didn't work: as soon as the second component was used, that used in the first place disappeared.

 

 

 

These limitations, it seems, are derived from how the held props are implemented: for every held prop a thread is created, but in its current state only the threads for both hands are actually implemented, and only a thread associated to a given bone can be active at any time.

 

 

 

 

 

 

 


ars longa vita brevis - Hippocrates (attributed)
 
If you want to tell jokes then use Muvizu; if you want to make 'Movies', use iClone; but if you want to tell stories, use Moviestorm - PrimaveraNZ
 
Shared addons & stuff for Moviestorm: https://drive.google...aTNsSFBuN0sxZHM


#3 Ralvaz1

Ralvaz1

    Critically acclaimed

  • Members
  • 219 posts
  • Gender:Not Telling

Posted 01 November 2017 - 06:04 PM

Tiene que haber una forma, de la misma manera que puede llevar un bolso, sostener un cigarrillo, o portar una pulsera al mismo tiempo

 

There has to be a way, the same way you can carry a bag, hold a cigarette, or wear a bracelet at the same time

 


Human beings are complicated. not ask to be born. Do not know how to live. Do not want to die


#4 jamoram62

jamoram62

    Master Director

  • Members
  • 787 posts
  • Gender:Male
  • Location:3724'21.05"N 00559'14.69"W

Posted 01 November 2017 - 06:14 PM

Tiene que haber una forma, de la misma manera que puede llevar un bolso, sostener un cigarrillo, o portar una pulsera al mismo tiempo
 
There has to be a way, the same way you can carry a bag, hold a cigarette, or wear a bracelet at the same time
 

 
Yeah, there's one: by using accessories.
 
What's really good about accessories is that an arbitrary number of them can be applied to a puppet at the same time, there's not a limit for this.
 
But accessories come with their own set of shortcomings:
- they can't be animated, for they're nothing but a mesh rigged to the puppet's skeleton; held props can.
- they can't be "switched on and off", ie, they will "stick" to the puppet, so if the character's "holding", say, a purse accessory, this will remain attached to the puppet throughout the scene. At most, you may create two versions of the same character: one with the purse and another with no purse, and switching between them with the hide/unhide routine. Again, held props can be switched on (when they begin to be used) and off (if there's any animation making them to disappear, or if the option "vanish at end" is checked).
 
 
 
 
 
 
 

ars longa vita brevis - Hippocrates (attributed)
 
If you want to tell jokes then use Muvizu; if you want to make 'Movies', use iClone; but if you want to tell stories, use Moviestorm - PrimaveraNZ
 
Shared addons & stuff for Moviestorm: https://drive.google...aTNsSFBuN0sxZHM


#5 jamoram62

jamoram62

    Master Director

  • Members
  • 787 posts
  • Gender:Male
  • Location:3724'21.05"N 00559'14.69"W

Posted 10 November 2017 - 05:00 PM

A couple of minor complaints this time:

 

1) You may know by now that Cal3D is the file format chosen by the developers of Movistorm as its "native" specification for describing the models and animations of its assets. Although not as popular as other file formats, it was a very reasonable and sensible decision, for Cal3D was not a proprietary specification and intended to become an universal standard, and a complete library of classes was available at the time for managing these files.
Too bad, Cal3D comes with its own shortfalls. One of these drawbacks is that the animation file format (.caf/.xaf files) has no provision for scaling transformations.

 

The last version (0.13) of the Cal3D specification states that the format of the animation files goes as follows:

o------------------------------------------------------------------------------o
| 3 cal3d animation file (.caf) - read by cocos3d                              |
o------------------------------------------------------------------------------o

All the keyframes of an animation are stored in this file. They are grouped by
tracks (one track per animated bone) and contain the time, the relative position
and the relative rotation to the parent bone.


description                length  type      comments
-------------------------  ------  --------  -----------------------------------
[header]
  magic token              4       const     "CAF\0"
  file version             4       integer   1300
  is compressed            4       integer   whether animation content is compressed (version 1300 and above)
  duration                 4       float     length of animation in seconds
  number of tracks         4       integer
  flags                    4       integer   bit-wise OR flags (version 1300 and above)

[first track]
  bone id                  4       integer   index to bone
  number of keyframes      4       integer

  [first keyframe]
    time                   4       float     time of keyframe in seconds
    translation x          4       float     relative translation to parent bone
    translation y          4       float
    translation z          4       float
    rotation x             4       float     relative rotation to parent bone
    rotation y             4       float     stored as a quaternion
    rotation z             4       float
    rotation w             4       float

  [all other keyframes]
    ...

[all other tracks]
  ...

So both translations and rotations are there, but no mention to scaling transformations. As an educated guess, I think it's reasonable to think that no support for this kind of transformations is provided in the official libraries.

 

EDIT: as a side note, Cal3D makes no provision for supporting vertex animations either, which is a completely different animal with some interesting possibilities, although to some extent can be faked with some clever bone designing and skeleton animation.

 

 

2) We must conclude and accept that, when animating props, we're restricted to translations and rotations. But this constraint tightens when we're dealing puppet animations, for translation transformations are only supported for the root bone. Translations for other bones apparently are filtered out and ignored.

Again this design decision seems to be a quite sensible one: as a matter of fact, the human musculoskeletal system, in non-pathological conditions, is most of the time restricted to rotations around articulations. It's true some translation motions are possible, but they're of minor relevance (ie, jaw).

 

However, there are times, I'd love to be able to have translation animations at my disposal for stretching and deforming my puppets. But, I'm afraid, no chance to get Mr Fantastic fighting the bad guys in your next movie.

 


ars longa vita brevis - Hippocrates (attributed)
 
If you want to tell jokes then use Muvizu; if you want to make 'Movies', use iClone; but if you want to tell stories, use Moviestorm - PrimaveraNZ
 
Shared addons & stuff for Moviestorm: https://drive.google...aTNsSFBuN0sxZHM


#6 Nahton

Nahton

    Master Director

  • Pioneers
  • 922 posts

Posted 11 November 2017 - 01:23 PM

It is a shame that this feature is locked down. I know at one time you could resize a character by putting them on a Navmesh and resize the Navmesh to shrink the character. This could be used to simulate children. I had a "SizerSlider" in my original Slider addon. They changed this in the 1.5 version I believe. 



#7 jamoram62

jamoram62

    Master Director

  • Members
  • 787 posts
  • Gender:Male
  • Location:3724'21.05"N 00559'14.69"W

Posted 11 November 2017 - 02:43 PM

It is a shame that this feature is locked down. I know at one time you could resize a character by putting them on a Navmesh and resize the Navmesh to shrink the character. This could be used to simulate children. I had a "SizerSlider" in my original Slider addon. They changed this in the 1.5 version I believe. 

 

Yeah, I read about this; navmeshes in the past used to be far more powerful things in the past.

 

However, I guess that resizing puppets might raise very annoying issues when interacting with other props, including held and interactive props, for they come with their own set of animations mirroring those of the puppet. Possibly, accessories would scale with the puppet, though I can't recall if this was referred to any time.

 

Also, I can remind there was some controversy about this approach to fake children. The purist faction rejected the very notion, because they didn't want the real thing, not miniaturized adults acting. And they had a point there. And there was the pragmatical faction, that stated that that was better than nothing. And they had a point there too.

 

 

 

 


ars longa vita brevis - Hippocrates (attributed)
 
If you want to tell jokes then use Muvizu; if you want to make 'Movies', use iClone; but if you want to tell stories, use Moviestorm - PrimaveraNZ
 
Shared addons & stuff for Moviestorm: https://drive.google...aTNsSFBuN0sxZHM


#8 jamoram62

jamoram62

    Master Director

  • Members
  • 787 posts
  • Gender:Male
  • Location:3724'21.05"N 00559'14.69"W

Posted 16 November 2017 - 04:57 PM

Lesson learned a few hours ago: EffectBinding names of pyroprops are globally recognized and not private identifiers for the specific part, template or prop.

 

What's a bit annoying is that if you happen to give an EffectBinding in the new pyroprop you're currently working on the same name than that in a EffectBinding in another previously defined prop, Moviestorm won't complain at all. Also, when an animation referring to said EffectBindig, no error is triggered nor registered: simply, the animation is not executed and the state machine gets stuck in an undetermined state, so no more animations can be triggered for the prop.

 

 


ars longa vita brevis - Hippocrates (attributed)
 
If you want to tell jokes then use Muvizu; if you want to make 'Movies', use iClone; but if you want to tell stories, use Moviestorm - PrimaveraNZ
 
Shared addons & stuff for Moviestorm: https://drive.google...aTNsSFBuN0sxZHM



  • Please log in to reply


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users