Heavily Nested MarkupExtensions

<GeometryModel3D Material="{uzi:VisualEffectMaterial Key=Arm, VisualEffect={uzi:SenseEffectExtension}}"
                 Geometry="{uzi:CylinderMesh CacheKey=1,
                 P1={uzi:Point3DVal Z={uzi:DoubleSum A={uzi:DoubleProduct A={uzi:DoubleVal Key=Length,Value=0.75, MinValue=0.1, MaxValue=1.5}, B=-1}, B=-0.09}},
                 P2={uzi:Point3DVal Z=0.16},
                 Diameter={uzi:DoubleVal Key=Diameter,Value=0.4, MinValue=0.05, MaxValue=1.0},
                 ThetaDiv={uzi:IntVal Key=Theta,Value=16, MinValue=8, MaxValue=20},
                 BaseCap=true,TopCap=true}"> 
</GeometryModel3D>

This is a bit of the part for an Arm model fragment. I use a lot of markup extensions to get the GeometryModel3D to be flexible enough for composition and environment shading.

First, the Material is a VisualEffectMaterial, which uses the Key to work with the Meta-Model system to figure out which texture to apply. The VisualEffect is mapped to the standard SenseEffectExtension, so that creature senses can be applied at render time.

The next big piece is the CylinderMesh used to provide the Geometry. This uses the HelixToolkit’s MeshBuilder to define parameters for creating a cylinder mesh. The Point3DVals are extensions to defined points (obviously), and the DoubleVals and IntVals define parameters that can be overriden when composing in a MetaModel. Lastly, the DoubleProduct (there’s also a DoubleSum) define mathematical functions on DoubleVals so that a same parameter can be re-used in multiple places as a factor (or sum) of other values.

Advertisements

3D Bladed Weapons

Great Sword to Dagger

Great Sword to Dagger

From left to right, Greatsword, Bastard sword, longsword, short sword and dagger. They’re all using the same coloring schemes so only the sizes and parts vary.


Warhammer!

Workshop Render of Warhammer Fragment

Workshop Render of Warhammer Fragment

Even though I’ve had the warhammer model fragment for awhile, I still think it looks pretty cool when properly painted with gradient materials. I was tightening up some of the other content tools, and also finished the 3D models fragments for the great sword, bastard sword, dart and javelin, as well as tightened up the long sword now that the great sword and bastard sword are around for comparison.

If I feel so inclined I’ll add images of some of them as well.


Zombies

Since I spent so much time on skeletons and traits over the past few weeks, I had hoped to get some benefit out of all that work when applying it to zombies. Apparently I did: took me about 45 minutes to add basic zombie support. There are still some things missing (zombies get single actions only, but I believe I mostly implemented something for this already), I’m not entirely satisfied with my way of “cloning” the flight movement and making its maneuverability rating “clumsy”. Also, I need to put some constraints on applying replacement creature templates, and some standard processes for replacing the in-map locator token and the token model.

Right now, there’s nothing preventing an animated object from being made a zombie or skeleton, nor from a zombie or skeleton being made a zombie or skeleton! There’s also a little bit of fuzz to work out on zombies that are based on creatures with partial power dice; but all in all, a good start to my dabble in virtual necromancy.


Mugshots of the Undead

general skeleton

general skeleton

Gargoyle skeleton face

Gargoyle skeleton face

first zombie face

first zombie face

slightly more dead zombie

slightly more dead zombie


All thanks to my face creator program…


The Skeleton Key

Finally got to test “skeletonizing” creatures.  First a human, then with a gargoyle (I use both).  For those of you that have been following me (ha ha, I jest!), you are well aware of how much I like the gargoyle as a test bed creature.  It has monster levels (and can increase in size by number of power dice), it can advance by character class, it has extra natural weapons slots, it can fly, has darkvision, magic damage reduction, etc.  So it also makes a good skeleton (and soon: zombie) test bed due to the the plethora of traits and things associated with replacing it.

Skeletons and zombies are handled by creating entirely new creatures whose skeleton/zombie species is based on the original creature, and the workshop command performs the tasks of removing the game token for the original creature and adding the one for the replacement creature (currently using the same model).  Skeletal gargoyles get more power dice than human skeletons, and they have bite and gore attacks.  They cannot fly and lose the DR/10 magic (though get DR/5 bludgeoning).

I had to fix some things (of course, that’s what debugging is all about) and have a few more tweaks to do: namely make an item slot trait to get around an ugly kludge for dealing with extra item slots (gore and bite, for instance) currently defined by the species body generator and not in the body constructor itself.