Object-parent relation is not supported
11 November 2014 16:36
Hi!
First thanks for your great addon. I just started to work with it (and blender) so may be my question is trivial.
I am working through some tutorials and had an error Exporting with the blend4web json Export:
Blend4web: Export error
Error: Object-parent relation is not supported
Clear the parent's inverse transform
1 Question: Is Object-parent relation not supported?
My Problem is that in Blender, aniamtion xyz coordinates are relative to the objects center (using the Graph editor -> Properties -> Active Keyframe) - but in the HTML enviorment starting the animation the object jumps to the scenes coordinates.
2 Question: I would like to keep the animation relative to the objects center in the html view. how do I achieve this?
Thank you for taking a look,
Martin.
First thanks for your great addon. I just started to work with it (and blender) so may be my question is trivial.
I am working through some tutorials and had an error Exporting with the blend4web json Export:
Blend4web: Export error
Error: Object-parent relation is not supported
Clear the parent's inverse transform
1 Question: Is Object-parent relation not supported?
My Problem is that in Blender, aniamtion xyz coordinates are relative to the objects center (using the Graph editor -> Properties -> Active Keyframe) - but in the HTML enviorment starting the animation the object jumps to the scenes coordinates.
2 Question: I would like to keep the animation relative to the objects center in the html view. how do I achieve this?
Thank you for taking a look,
Martin.
11 November 2014 17:55
Hello and welcome!
First of all, parenting trouble. This happens when child object has an inverse transform, in other words, the object you want to be a parent must be in the center (0,0,0 XYZ), and only after that parenting can be done - without inverse transform. BTW, here in our documentation are lots of helpful tips about errors
So, to fix that when you have parent relationship already set:
-clear translation and rotation of parent (alt+r and alt+g).
-select a child, put 3D cursor to its origin (alt+s -> Cursor to selected)
-Click alt+p and select "Clear parent inverse" (after that a child might fly faaar away somewhere)
-Move child back by alt+s ->selected to cursor.
That might be easiest way to clear inverse and to keep child where it must be.
About animation: it's a little tricky. Send me please your file (or the example if you can't send original) by the mail - pkotov@blend4web.com. It's difficult to help without some investigation
First of all, parenting trouble. This happens when child object has an inverse transform, in other words, the object you want to be a parent must be in the center (0,0,0 XYZ), and only after that parenting can be done - without inverse transform. BTW, here in our documentation are lots of helpful tips about errors
So, to fix that when you have parent relationship already set:
-clear translation and rotation of parent (alt+r and alt+g).
-select a child, put 3D cursor to its origin (alt+s -> Cursor to selected)
-Click alt+p and select "Clear parent inverse" (after that a child might fly faaar away somewhere)
-Move child back by alt+s ->selected to cursor.
That might be easiest way to clear inverse and to keep child where it must be.
About animation: it's a little tricky. Send me please your file (or the example if you can't send original) by the mail - pkotov@blend4web.com. It's difficult to help without some investigation
12 November 2014 11:40
12 November 2014 14:43
Well, this example can be fixed in easiest way But I'll explain the hard way too (which is actually more powerful when you're used to it), so there won't be problems with complicated projects.
Here are three things.
1. You didn't turn on "Animation -> use default" on animated objects
In object tab in our section Blend4Web find "animation" and turn on "Use default". Here you can set animation to cyclic if you want, too.
2. We don't support non-uniform scaling. Yeah, only proportional scaling (all axes equally, say, 2,2,2) works. Still, it can be done using bones or vertex animation :)
Now, let's say "U" will be scaled equally and problems 1 and 2 are fixed. If you'll export everything now, it will.. Well, it will work, but not as we needed and strangely. Here is it.
Soo. Why is it happening?
Everything is very easy
3. If animated objects aren't at center, insert at least one location keyframe in all axes. If location keyframes aren't set, engine doesn't know where exactly is an animated object, so it puts this object in 0,0,0. So by inserting location keyframe you, like, "pin" your object to the place where it must be :) Letter H has only X location keyframes, so it works in one axis, and Y and Z are not pinned so they are zero. Well, I inserted location keyframes and everything works fine now:
click
Here is final .blend file
As for hard part. Well, it's not that hard If your project has several animated objects and armature animation, I highly recommend using grouping, linking and making proxies.
Let's say, you want to make a scene where are two characters. One is singing, other is playing piano. So what we got here: pianist, singer (and their armatures), mic, piano, floor and some lights. Now let's make this kind of project architecture:
Scene.blend contains floor, lightning, camera, mic and piano. This is main file which will be exported. Main characters and their armatures are linked to the main scene. Note: singer and pianist (their rigs, too) must stay in the center in their .blends. Well, their origins, to be more specific And they must be grouped: let's say, singer and his armature are "group_singer" and pianist with his armature are "group_pianist". So: you're linking "group_singer" from singer.blend to scene.blend and then you make a proxy. Select linked group, press ctrl+alt+p and select your armature name. Now you have a proxy which is like your armature and you can work with it, animate it and etc. , but the main armature will be in your singer.blend file untouched. That's a great way to operate animated things in big projects :) You can find example of it in our game examples, which are in our SDK, too
Hope it'll help!
Here are three things.
1. You didn't turn on "Animation -> use default" on animated objects
In object tab in our section Blend4Web find "animation" and turn on "Use default". Here you can set animation to cyclic if you want, too.
2. We don't support non-uniform scaling. Yeah, only proportional scaling (all axes equally, say, 2,2,2) works. Still, it can be done using bones or vertex animation :)
Now, let's say "U" will be scaled equally and problems 1 and 2 are fixed. If you'll export everything now, it will.. Well, it will work, but not as we needed and strangely. Here is it.
Soo. Why is it happening?
Everything is very easy
3. If animated objects aren't at center, insert at least one location keyframe in all axes. If location keyframes aren't set, engine doesn't know where exactly is an animated object, so it puts this object in 0,0,0. So by inserting location keyframe you, like, "pin" your object to the place where it must be :) Letter H has only X location keyframes, so it works in one axis, and Y and Z are not pinned so they are zero. Well, I inserted location keyframes and everything works fine now:
click
Here is final .blend file
As for hard part. Well, it's not that hard If your project has several animated objects and armature animation, I highly recommend using grouping, linking and making proxies.
Let's say, you want to make a scene where are two characters. One is singing, other is playing piano. So what we got here: pianist, singer (and their armatures), mic, piano, floor and some lights. Now let's make this kind of project architecture:
Scene.blend contains floor, lightning, camera, mic and piano. This is main file which will be exported. Main characters and their armatures are linked to the main scene. Note: singer and pianist (their rigs, too) must stay in the center in their .blends. Well, their origins, to be more specific And they must be grouped: let's say, singer and his armature are "group_singer" and pianist with his armature are "group_pianist". So: you're linking "group_singer" from singer.blend to scene.blend and then you make a proxy. Select linked group, press ctrl+alt+p and select your armature name. Now you have a proxy which is like your armature and you can work with it, animate it and etc. , but the main armature will be in your singer.blend file untouched. That's a great way to operate animated things in big projects :) You can find example of it in our game examples, which are in our SDK, too
Hope it'll help!
12 November 2014 18:08
Hi Pavel,
Thank you for your very detailed answer. It was really helpful and I walked through the points.
1. I turned "Animation -> use default" of for the objects because I wanted to start the animation via Javascript. This works fine, see the tutorial "creating a web app programming" from Ivan Lyubovnikov.
2. That explains …
3. The Tip with adding zero Local animation to pin the animated object is a very good point.
Your suggestion how to handle complex Projects by using grouping, linking and making proxys sounds very attractive - I will try this technique. At the moment I work throgh the basics - gaming will come at the end.
I have downloaded your blend file and when I export it as html file I missed the rotation. I then changed it from Euler Rotation to Quaternion Rotation and it worked. Strange - because your online example also worked…
Maybe I am missing some preference settings so that Euler Rotation is not exporting (my Blender Version : 2.72).
Just wanted to mention in case that others got the same problem.
I found all the examples in the SDK - Thank you for remembering. Best way to learn, except to this great support here.
Kind Regards,
Martin
Thank you for your very detailed answer. It was really helpful and I walked through the points.
1. I turned "Animation -> use default" of for the objects because I wanted to start the animation via Javascript. This works fine, see the tutorial "creating a web app programming" from Ivan Lyubovnikov.
2. That explains …
3. The Tip with adding zero Local animation to pin the animated object is a very good point.
Your suggestion how to handle complex Projects by using grouping, linking and making proxys sounds very attractive - I will try this technique. At the moment I work throgh the basics - gaming will come at the end.
I have downloaded your blend file and when I export it as html file I missed the rotation. I then changed it from Euler Rotation to Quaternion Rotation and it worked. Strange - because your online example also worked…
Maybe I am missing some preference settings so that Euler Rotation is not exporting (my Blender Version : 2.72).
Just wanted to mention in case that others got the same problem.
I found all the examples in the SDK - Thank you for remembering. Best way to learn, except to this great support here.
Kind Regards,
Martin
12 November 2014 18:41