"Import by reference" breaks character's reference layers

General Moho topics.

Moderators: Víctor Paredes, Belgarath, slowtiger

Post Reply
User avatar
PaperWaspNest
Posts: 44
Joined: Tue Jun 23, 2015 6:01 am
Location: Redmond, WA
Contact:

"Import by reference" breaks character's reference layers

Post by PaperWaspNest »

Unsure of this being a bug or user error.

I have a character who uses a few reference layers to avoid having to dig through many nested layer masks when I want to manipulate the points in the original shape. For example the mouth: I have the source mouth layer on the top of my layer stack, set to "hide in editing view / don't render this layer". It has 3 or 4 referenced layers set into some folders that control a complex facial rig. Works great!

However, when I save this character to my library and then import him into a new scene and check "import by reference", everything I described above breaks and all of those referenced mouth layers become regular layers. The source mouth layer no longer controls the others. Is this expected, or a bug?

I'm happy to elaborate more if needed. Thanks.
User avatar
Pinesal
Posts: 260
Joined: Mon Feb 18, 2008 2:43 am

Re: "Import by reference" breaks character's reference layer

Post by Pinesal »

Yes. I was trying to do the same thing and it appears that layer referencing doesn't work the way you or I want it to.

Basicly the idea behind reference layers seems to be that of you are collaborating with someone on a project, you can make changes to project file containing a character and the other person using that character in another project, will get that change updated in his project.

When you import an object with referenced layers into a new project. The referenced layers are referencing the layer in the original file you imported from. NOT the layer within the new project. It's a bummer, I know.
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: "Import by reference" breaks character's reference layer

Post by Greenlaw »

Import by Reference Layers and Import By Reference are really two different things--they use a similar concept (referencing) but the intended use is typically very different.

Reference Layers allow you to use dynamically linked copies of a layer within a scene. It's great for, let's say, when you need a rigged arm to be in front of and behind a character using a mask and using a mask with different settings to show different parts. The really cool thing is that you only need be concerned with animate animating the source layer and the reference will stay in sync. The tricky part is that you only ever animate the original source layer or you will break the link, so I color my reference layers Red to remind myself and other animators to avoid animating that layer. (A layer lock would be better--maybe we'll get that in a future update.) There are actually many different ways you might use a but that's the way I commonly use them at work.

Import By Reference is kind of the same idea but the element you import is linked to a separate source file instead of a layer within the scene. Like Pinesal says, this feature is useful in a collaborative environment but it's also useful if you expect your character to change by design or rigging after it's already being animated in production. This way, the cosmetic or technical changes can be made throughout the production without (hopefully) breaking the animation that's already been done.

(IMO, this is a risky workflow though. It's much more sensible to nail down your designs and rigs before you start animating. I once witnessed a professional studio job nearly crash and burn because somebody updated a source rig and the change wiped out everybody's animations in scenes that directly referenced that rig. All I can say is that I was glad to be on a different production at the time. Rig referencing is not a bad approach, buy you do need to be very careful with the updates.)

Anyway, unless you're going to make significant changes to the rig, I think you should probably use the General Import command for the character. The Reference Layers in the character should come into the scene exactly the way you set it up in the original scene. The rig won't be dynamically linked to the source of course but, personally, I feel much better knowing I'm not going to find an unwanted surprise in my scene when I open it later to make a 'minor' change. :)

BTW, one thing I've found is that certain properties in a Reference Layer cannot be changed between the layers, notably in the Group Masking Options. For example, let's say you want to create a Reference of a Group Mask Layer, and you want the source layer to be set to Hide All and the reference layer to be set to Reveal All so you can show opposing sections of the nested images--well, you can't do that this way because you really can't change the settings. ASP will appear to allow the change but when you close and reopen the scene, you'll find that the reference has readopted the setting from the source layer. This is actually normal behavior because, as I said, Masking Options are not keyframeable properties. Fortunately, there are other ways to get the desired result--for example, instead of messing with the Group Mask settings, you can create copies of a layer with opposite settings, make references of those layers, they you hide one layer in the source but and hide the other one in the reference copy.

I hope that's helpful. It's probably more information than you were asking for but your situation sounded similar to what I was dealing with last fall. BTW, once I get my new website up and running, I'm planning on creating some tutorial videos which might make this clearer to follow. I'll post an announcement when I get that project going.

G.
User avatar
Pinesal
Posts: 260
Joined: Mon Feb 18, 2008 2:43 am

Re: "Import by reference" breaks character's reference layer

Post by Pinesal »

Greenlaw wrote: Anyway, unless you're going to make significant changes to the rig, I think you should probably use the General Import command for the character. The Reference Layers in the character should come into the scene exactly the way you set it up in the original scene. The rig won't be dynamically linked to the source of course but, personally, I feel much better knowing I'm not going to find an unwanted surprise in my scene when I open it later to make a 'minor' change. :)

OMG! The answer was so simple! I can't believe this didn't occur to me! If you import the object but DON'T check "import by reference" your reference layers within that import stay intact! Wow, that changes a lot for me! PaperWaspNest this is your, and my SOLUTION.

Thanks Greenlaw.
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: "Import by reference" breaks character's reference layer

Post by Greenlaw »

Glad that helped. Sorry I didn't mention the check mark. I was writing off the top of my head and forgot that 'little' detail. :)

G.
User avatar
PaperWaspNest
Posts: 44
Joined: Tue Jun 23, 2015 6:01 am
Location: Redmond, WA
Contact:

Re: "Import by reference" breaks character's reference layer

Post by PaperWaspNest »

Thank you! Yep, I have been using the general import option as I've begun animating. However I have indeed made improvements to my rigs and its kind of a bummer the already animated scenes can't be updated with those changes easily. Animating those scenes were what caused me to see the flaws in my rigs, after all. I suppose these are just growing pains though - these are my first rigs and my first big production. I agree, Greenlaw, having the security that some minor change in the source rig won't ever break other scenes is a nice upside to this problem I posted.
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: "Import by reference" breaks character's reference layer

Post by Greenlaw »

I find that I often need to mod my rigs for scene specific situations--there's always going to be some little thing the character needs to do that it will probably never ever do again in another scene, so it doesn't make sense to build that into the original rig.

If I add some new hands or facial expressions to a character in a specific scene, I just make sure to add those to the master rig for future use.

I think the best you can do without going crazy is to create a rig that's easy to animate and covers at least 90% of situations. It's so easy to knock out 'one-offs' and rig mods in ASP that I usually don't sweat the remaining 10%. :)

G.
JimmyMcNulty
Posts: 16
Joined: Tue Mar 20, 2012 3:27 pm

Re: "Import by reference" breaks character's reference layer

Post by JimmyMcNulty »

Just saw this thread, searching for another issue with reference layers.

I must say, this is a very big drawback of functionality. In our company, the ability to update rigs over the time of production (normally months or years) is very important (mostly in 3D, but our Anime Studio projects would benefit from it too). For example, main character rigs for a 26 episode TV series could not be feature complete from the start, so updates are part of the process. Also schedules are normally tight, so mistakes may appear not before animating the shots. And there will be a lot of shots at this point, because the scene prep might be very fast.
With the referencing, the character is always on the same spot and the scenes just reference this character. And as the update for the referencing in Moho has a pull system, animators with a need for an update pull the update into their scenes, other animators just work with the old reference in their scenes. In fact, Autodesk Maya referencing is pushing the update into the scenes, so you have to be very careful with the updates. The benefit is, all the animators will have the latest version of the rig. And the animators normally don't and don't have to think about the version of the rig, until there is a problem.

On the other hand, using layer referencing is also very beneficial. We are using it for controlling expressions of several head turns in several character views (as the MorphDials script is not working anymore) and also controlling hand views from a central hand, controlling the hand views in every character view.

So have to decide between one or the other, I have to go without file referencing and stick with layer referencing. Because without layer referencing, our character setup would be not possible anymore (expressions, hands are a bonus with the referencing) and animation would be much slower. Then the solution for updates would be saving the animation of all relevant layers (script), exchange the rig and load the animation on the new rig. Takes more time, but would be our old Anime Studio 8 workflow anyway.
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: "Import by reference" breaks character's reference layer

Post by Greenlaw »

I would give it a try in a controlled experiment and see if it works for you. It's been quite a while since the comments were posted above (last February) and ASP/Moho has seen a lot of improvements since then.

A few months ago, I thought about trying File Referencing for a big assignment at work but decided not to risk it because of the schedule and complexity of the rigs. Now that I'm almost done with that assignment, Ive been wondering if File Referencing could have helped at some points during production.

What also got me reconsidering File Referencing was seeing how it was used by Cartoon Saloon in their Puffin Rock Pipeline webinar. I thought it was interesting that they had an 'intermediate' Reference version so it didn't directly affect the animators until they were absolutely sure about updating existing scenes. And updating a reference is optional anyway, so it can be tested before committing existing scenes to the rig changes.

I think once I get a little downtime, I'm going to focus some R&D on this, and see if it's something I might use at work and on my personal projects.
JimmyMcNulty
Posts: 16
Joined: Tue Mar 20, 2012 3:27 pm

Re: "Import by reference" breaks character's reference layer

Post by JimmyMcNulty »

Greenlaw wrote:I would give it a try in a controlled experiment and see if it works for you. It's been quite a while since the comments were posted above (last February) and ASP/Moho has seen a lot of improvements since then.
I will definitively give it a try next week again, but from the posts on this thread the approach seems to be a bit different from other programs. File referencing is kind of overwriting layer referencing. It would be nice, if the referencing would just reproduce the actual status of the rig in the master file. So, if I have layer referencing in the rig, it should work like in the master. If I change something in the master, I could load it real fast into the referenced file. Under existing animation.
I will post an update on this. Maybe it's changed.
Greenlaw wrote:A few months ago, I thought about trying File Referencing for a big assignment at work but decided not to risk it because of the schedule and complexity of the rigs. Now that I'm almost done with that assignment, Ive been wondering if File Referencing could have helped at some points during production.
I could just recommend to you using file referencing. If you think, something could break publishing a new version, just version up the old rig files, so you can real quick roll back. Something will go wrong, but if you can make it work again real fast, nobody should be mad at you. I had this problem several times, with push reference systems. Suddenly my skype was flashing like crazy...

And I will try have a look on the Cartoon Saloon Webinar, if it's still available.
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: "Import by reference" breaks character's reference layer

Post by Greenlaw »

Thanks for the advice. When I'm able to get to this I'll post my thoughts here as well.

The Cartoon Saloon Pipeline webinar was posted on SM's YouTube channel a couple of weeks ago. It was very informative and nice to be able to compare our pipeline with another studio's. Generally speaking, I guess we're not so different but that's helpful to know too. Their custom tools demos are very interesting so be sure to watch for that part.

Here's the video:

User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: "Import by reference" breaks character's reference layer

Post by Greenlaw »

I still need to revisit my testing but, in recent days, I've found myself in a situation where rig referencing might have saved me some time. I have a project where I started off with all the hand poses I thought I would need in a character, but after I animated several scenes, I found I needed to add some new hand poses. No problem, I thought--I simply updated my current scene and revised my master for future scenes. But I did not update any scenes I had already finished where the poses were not needed. Well...recently I've been asked to revisit those early scenes and now I'm finding I need some of those additional hand poses. D'oh!

Luckily, updating the rigs in each scene hasn't been difficult but, yeah, it would be great if I could just click an update button to add the new poses and revised actions.

After I'm done with this project, I seriously need to reconsider reference rigs. I'm not completely sure the existing system would have helped in this case but I won't know until I try.
JimmyMcNulty
Posts: 16
Joined: Tue Mar 20, 2012 3:27 pm

Re: "Import by reference" breaks character's reference layer

Post by JimmyMcNulty »

Got some time to do some testing with the referencing.
It seems like the file referencing is always overwriting the layer referencing, what is sort of confirming the title of this discussion. This is true, if you import by reference with layer referencing inside the imported file, but also, if you try to reference from a layer(-stack), that was imported by reference. I hope this is understandable.
But it is possible to change the referencing in a texteditor. What should make scripting possible, with an appropriate workflow system. Doing it by hand would be very time consuming.

What I don't understand about this:
Why is this not working in the first place?
Why is referencing from a file referenced layer doing exactly the same thing as copying the layer?

So the solution (impracticable for production without scripting), if smith micro is not changing something about it:

For example: I took a hand turnaround, 8 rigged hand views in a switch layer, from a seperate file and referenced it into a character. Then I tried to reference this layer, but it was giving me a copy of the layer also referenced to the hand turnaround file. So I checked the character file in a texteditor, to find out what is going on.

Some short code lines from my master test file and my test scene, because it's easier to navigate and to find stuff.
This is the master file and I searched for my test bone layer ("bone_master"). Basically you see the name, the unique(?) uuid (I have to check on this too) and there is no referencing at all.

Code: Select all

"name":"bone_master",
"uuid":"fbe27a92-7774-4c3f-a23b-cd3181500fc5",
...
"layer_ref_uuid":"",
"layer_ref_fileref":{"relativeTo":"Absolute",
"path":""},
"layer_ref_path":"",
"layer_ref_same_doc":false,
"layer_ref_mod_date":0,
Now a quick look into the reference scene. My import by reference layer ("bone_file_ref") looks like expected. The layer_ref_uuid matches the uuid number of my test bone layer in my master file. The layer_ref_same_doc is set to false. (layer_ref_fileref and layer_ref_path are the same, because both files are in the same folder)

Code: Select all

"name":"bone_file_ref",
"uuid":"0c95c0e8-7ece-417e-b450-fa4530875e9f",
...
"layer_ref_uuid":"fbe27a92-7774-4c3f-a23b-cd3181500fc5",
"layer_ref_fileref":{"relativeTo":"Project",
"path":"master.moho"},
"layer_ref_path":"master.moho",
"layer_ref_same_doc":false,
"layer_ref_mod_date":1479573644,
But the layer reference bone layer ("bone_layer_ref") is doing the exact same thing as the file reference bone layer and that's not what I wanted.

Code: Select all

"name":"bone_layer_ref",
"uuid":"95043796-ad12-4af6-b629-0e134b29d16b",
...
"layer_ref_uuid":"fbe27a92-7774-4c3f-a23b-cd3181500fc5",
"layer_ref_fileref":{"relativeTo":"Project",
"path":"master.moho"},
"layer_ref_path":"master.moho",
"layer_ref_same_doc":false,
"layer_ref_mod_date":1479573644,
Now the fun part: Changing some values to make it work. The layer_ref_uuid number must be the number of the "bone_file_ref" layer from the same file. The layer_ref_fileref changes too: "relativeTo":"Absolute" and path is empty. layer_ref_path is also empty. The referencing is inside the file, so layer_ref_same_doc is true.

Code: Select all

"name":"bone_layer_ref",
"uuid":"95043796-ad12-4af6-b629-0e134b29d16b",
...
"layer_ref_uuid":"0c95c0e8-7ece-417e-b450-fa4530875e9f",
"layer_ref_fileref":{"relativeTo":"Absolute",
"path":""},
"layer_ref_path":"",
"layer_ref_same_doc":true,
"layer_ref_mod_date":1479573644,
Now the layers do exactly what I wanted before. One layer is referenced from another file. If you update the original (master) file, you can update the layer in the scene and it gets updated. As soon as you do this, the referenced layer will recognize the update as well and you can update this too. Also all the benefits from layer referencing will occure as well. The only thing that's missing, is the small red target dot on the master layer.

Problems:
This procedure is easy for just a few layers and getting very complicated with a lot of layers, because it's always connecting from layer to layer, outside and inside the file.
So a script would be nice, but it needs also some preparation. A good naming convention for the layers is a must, reference files should have the same name all the time and the reference files should stay in the same place all the time (the second and last points are best for referencing anyway, because you don't want to reconnect all the time). Tags should be helpful as well.

This is everything I got from my investigation about referencing this week.
For referencing reuse parts into assets, this could be a (scripted) solution. For referencing asset files with referenced layers into shot files, this would be possible as well, but it would be necessary for every scene prep shot. Also updating referenced layers should be scripted. I have to talk to our scripting person. :wink:

If somebody has some more information about it, please let me know. If I have some new information about it, I will try to let you know.
Greenlaw wrote: Here's the video:
Thanks a lot. Very interesting. And the things shown look very similar to our pipeline approach too.
Post Reply