Horde3D http://www.horde3d.org/forums/ |
|
Vertex Animation http://www.horde3d.org/forums/viewtopic.php?f=2&t=2300 |
Page 1 of 1 |
Author: | rasteron [ 30.01.2017, 11:42 ] |
Post subject: | Vertex Animation |
Hi, I was wondering how I can do Vertex or Morph animation with Horde3D. I would like to know what exporter do I use to properly convert a DAE file with vertex animation or if the current Blender exporter supports this and how? Last thing is I would assume you use the Geometry flag instead when doing animation updates as referenced here.. https://github.com/horde3d/Horde3D/blob ... odel.h#L52 I have a Quake MD2 file to test it with to convert to Horde 3D format. |
Author: | Irdis [ 30.01.2017, 12:46 ] |
Post subject: | Re: Vertex Animation |
Horde was developed with OpenCollada in mind, but latest version of Autodesk Collada exporter are working as well. As for Blender - well, it depends. It may work, but as well may not work with default collada exporter (I don't know about Blender to Horde exporter). And yes, you should call h3dSetupModelAnimStage() to set animation for your node; h3dUpdateModel( node, H3DModelUpdateFlags::Geometry ) and, probably, h3dSetModelMorpher during update. |
Author: | rasteron [ 30.01.2017, 14:48 ] |
Post subject: | Re: Vertex Animation |
Thanks Idris! ![]() As for the Blender Exporter, I'm presented with this scene file with some hints and the geo file is larger than the bone animation counterpart with no .anim file. (19mb, 198 frames, ~1.5k polys) Code: <Model name="soldier2" geometry="models\soldier2\soldier2.geo"> <!-- Morph targets: "Key.001" "Key.002" "Key.003" "Key.004" "Key.005" "Key.006" "Key.007" "Key.008" "Key.009" "Key.010" "Key.011" "Key.012" "Key.013" "Key.014" "Key.015" "Key.016" "Key.017" "Key.018" "Key.019" "Key.020" "Key.021" "Key.022" "Key.023" "Key.024" "Key.025" "Key.026" "Key.027" "Key.028" "Key.029" "Key.030" "Key.031" "Key.032" "Key.033" "Key.034" "Key.035" "Key.036" "Key.037" "Key.038" "Key.039" "Key.040" "Key.041" "Key.042" "Key.043" "Key.044" "Key.045" "Key.046" "Key.047" "Key.048" "Key.049" "Key.050" "Key.051" "Key.052" "Key.053" "Key.054" "Key.055" "Key.056" "Key.057" "Key.058" "Key.059" "Key.060" "Key.061" "Key.062" "Key.063" "Key.064" "Key.065" "Key.066" "Key.067" "Key.068" "Key.069" "Key.070" "Key.071" "Key.072" "Key.073" "Key.074" "Key.075" "Key.076" "Key.077" "Key.078" "Key.079" "Key.080" "Key.081" "Key.082" "Key.083" "Key.084" "Key.085" "Key.086" "Key.087" "Key.088" "Key.089" "Key.090" "Key.091" "Key.092" "Key.093" "Key.094" "Key.095" "Key.096" "Key.097" "Key.098" "Key.099" "Key.100" "Key.101" "Key.102" "Key.103" "Key.104" "Key.105" "Key.106" "Key.107" "Key.108" "Key.109" "Key.110" "Key.111" "Key.112" "Key.113" "Key.114" "Key.115" "Key.116" "Key.117" "Key.118" "Key.119" "Key.120" "Key.121" "Key.122" "Key.123" "Key.124" "Key.125" "Key.126" "Key.127" "Key.128" "Key.129" "Key.130" "Key.131" "Key.132" "Key.133" "Key.134" "Key.135" "Key.136" "Key.137" "Key.138" "Key.139" "Key.140" "Key.141" "Key.142" "Key.143" "Key.144" "Key.145" "Key.146" "Key.147" "Key.148" "Key.149" "Key.150" "Key.151" "Key.152" "Key.153" "Key.154" "Key.155" "Key.156" "Key.157" "Key.158" "Key.159" "Key.160" "Key.161" "Key.162" "Key.163" "Key.164" "Key.165" "Key.166" "Key.167" "Key.168" "Key.169" "Key.170" "Key.171" "Key.172" "Key.173" "Key.174" "Key.175" "Key.176" "Key.177" "Key.178" "Key.179" "Key.180" "Key.181" "Key.182" "Key.183" "Key.184" "Key.185" "Key.186" "Key.187" "Key.188" "Key.189" "Key.190" "Key.191" "Key.192" "Key.193" "Key.194" "Key.195" "Key.196" "Key.197" --> <Mesh name="soldier2" material="models\soldier2\soldier2.material.xml" batchStart="0" batchCount="1902" vertRStart="0" vertREnd="1898" /> </Model> EDIT: Found some related threads viewtopic.php?f=1&t=1460#p7884 |
Author: | rasteron [ 30.01.2017, 15:25 ] |
Post subject: | Re: Vertex Animation |
Found the settings in the wiki, I guess I missed it the last time I checked. will try this now.. ![]() Now only setting up in code is just what I need.. |
Author: | Irdis [ 30.01.2017, 15:33 ] |
Post subject: | Re: Vertex Animation |
I've never worked with morph targets myself, so I am of little help for you. It seems that .anim file is not produced by the converter and morph targets are written to the geometry file. As for scene file, the comment with morph targets is the correct behaviour. I think that default parameters in the opencollada exporter can be used. You should only set "Sample animation" in order to convert the animation correctly. You are right, collada version is 1.4.1 (well, horde supports 1.4, and 1.4.1 only adds physics support, but probably it does not matter) |
Author: | rasteron [ 30.01.2017, 16:12 ] |
Post subject: | Re: Vertex Animation |
Thanks again Idris. I got no luck with the max exporter but some progress with the blender exporter and it looks like it works well. ![]() The only issue left right now is how to play specific keys and run them frame by frame and maybe in a loop.. If I set specific morph keys like this it sets the frame and thats all Code: SetModelMorpher( _man, "Key.150", 1.0 ) If I add another morph target string and command, it blends up and I don't get the expected results for vertex animation. Still trying to find any related vertex or morphing thread.. Edit: Maybe this is the proper way to do it, but I'm not sure and looks like it works ![]() Code: SetModelMorpher( _man, "Key.001", 1.0 ) //play first frame
SetModelMorpher( _man, "Key.001", 0.0 ) //reset blend to none SetModelMorpher( _man, "Key.002", 1.0 ) //play next frame full blend SetModelMorpher( _man, "Key.002", 0.0 ) //rinse SetModelMorpher( _man, "Key.003", 1.0 ) //and SetModelMorpher( _man, "Key.003", 0.0 ) //repeat ... |
Author: | Irdis [ 30.01.2017, 16:36 ] |
Post subject: | Re: Vertex Animation |
You should probably try the algorithm that was used in Knight sample - you have two animations, one with weight 1 and other with weight 0. Then, when needed, you blend between two stages. Then animation 1 is discarded, animation 2 becomes animation 1 and animation 3 becomes animation 2. |
Author: | rasteron [ 30.01.2017, 16:39 ] |
Post subject: | Re: Vertex Animation |
Ah yes, I forgot about that. ![]() btw, the manual switch I posted above only works with two morph targets, stringing them morphs and scales it somehow.. :/ Code: SetModelMorpher( _man, "", 0.0 ) SetModelMorpher( _man, "Key.001", 1.0 ) SetModelMorpher( _man, "", 0.0 ) SetModelMorpher( _man, "Key.002", 1.0 ) ... Edit: Setting an empty string instead before the next frame now plays the animation without any problems. ![]() |
Author: | rasteron [ 30.01.2017, 16:59 ] |
Post subject: | Re: Vertex Animation |
Question, how do you apply MorphTargets to SetModelAnimParams to do the blending if it only works with bone animation? or maybe I am missing something here.. |
Author: | Irdis [ 30.01.2017, 19:56 ] |
Post subject: | Re: Vertex Animation |
Yep, it seems that SetModelAnimParams and h3dSetupModelAnimStage only work with animation resources, that contain bone animation. As morph targets (or blend shapes) are mainly used for facial animation, probably main engine developer assumed that another system should be built on top of horde to interpolate between different morph keyframes. P.S. Check old GameEngine sample that uses morph targets with Xbox 360 pad analog movement: https://hcm-lab.de/public/Horde3D/trunk ... lfredXpad/ |
Author: | rasteron [ 31.01.2017, 14:56 ] |
Post subject: | Re: Vertex Animation |
Thanks Idris! ![]() |
Page 1 of 1 | All times are UTC + 1 hour |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |