Project organization

Wondering how to accomplish a certain animation task? Ask here.

Moderators: Víctor Paredes, Belgarath, slowtiger

Post Reply
dondo
Posts: 60
Joined: Tue Jan 15, 2019 4:45 am

Project organization

Post by dondo »

So per my earlier post, I'm an amateur coming up to speed on Moho, fairly early in the learning curve. I'm working on a project with my wife to create animated illustrations for her children's book, which will result in a series of 10-15 minute animations for each chapter, with a collection of recurring characters. She's doing the illustrations (and audio), I'm doing the rigging, and we're sharing the animation. We're using DropBox to syncronize the assets and .moho files.

So I'm trying to understand how to set up an appropriate folder structure for two users to work on a shared project. My initial approach was as follows:

Code: Select all

MOHO
- rigs
- - character-1
- - - character-head.psd
- - - character-head-rig.moho
- - - - front-view
- - - - - character-front.psd
- - - - - character-front-rig.moho
- sets
- - set1
- - - set1.psd
- - - set1.moho
- chapters
- - chapter1
- - - c1.scene-1.moho
- - - c1.scene-1-bg.png


I rig up the head with switch layers to choose e.g. eyes and mouths.
Then to create the character-body rig I import the character-head.mono (with "import by reference" checked), and rig up the bones and clean up the motions.
To create a scene I duplicate the set, and import the characters (again with "import by reference" checked).

So far everything makes sense and largely works. But every time I switch computers and open an existing scene, every time it tells me that it can't find any of the .psd files, so I have to navigate via the "rigs" folder to each asset. That is a PITA.

Am I overcomplicating things? Is there a better way to approach this?
Last edited by dondo on Fri Jan 18, 2019 5:35 am, edited 1 time in total.
User avatar
slowtiger
Posts: 6067
Joined: Thu Feb 16, 2006 6:53 pm
Location: Berlin, Germany
Contact:

Re: Project organization

Post by slowtiger »

Ah, that old problem again ... I work in shared settings for 25 years now, and still there's no simple solution to that.

You have to think like a moho file to make this work a bit smoother: you are in a valley (the depths of a folder structure), and all you can see is mountain peaks (the root folders), but none of the other valleys. For dependencies (like imported images) you need a path which goes up to one of the clearly visible peaks, and from there on the way down to the next valley is easy and doesn't change.

A possible folder structure would be:

Code: Select all

- psd_files
- - props
- - characters
- - - character1
- - - - c1_front.psd
- - - - c1_side.psd
- - - character2
- - - - c2_front.psd
- - - - c2_side.psd
- rigs
- - char1_head_rig.moho
- scenes
- - scene1
- - - scene1.moho
- - - scene1_images
- - - - sc1_bg.png
Note that there's no .moho file in the PSD folder. Our mountain peaks here are psd_files, rigs, and scenes. From inside of each of these the other folders are visible, which means a path can be found.
AS 9.5 MacPro Quadcore 3GHz 16GB OS 10.6.8 Quicktime 7.6.6
AS 11 MacPro 12core 3GHz 32GB OS 10.11 Quicktime 10.7.3
Moho 13.5 iMac Quadcore 2,9GHz 16GB OS 10.15

Moho 14.1 Mac Mini Plus OS 13.5
dondo
Posts: 60
Joined: Tue Jan 15, 2019 4:45 am

Re: Project organization

Post by dondo »

So my day job is a software engineer, and I've written lots of code to navigate folder hierarchies. Typically the language we use is "relative" and "absolute" paths. A relative path goes up (some number of levels) from the current folder to a parent that contains the folder we care about, and then down from there; an absolute path goes from the global root down to the intended target. So you can specify any folder using absolute paths, and you can get from any folder to any other folder using relative paths.

I don't know how to map what you've said into that language.

What I see from your proposed layout is that all the files of a particular type are in the same a folder. So all the moho files for a character are in one folder, all the associated psds are in another, and the lone png is in another folder.

So is that the heuristic here? All files of a given type, when included, should be in the same folder?
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Project organization

Post by Greenlaw »

I know exactly what you mean. Sometimes Moho's file path issues makes me nuts, and it can make Moho awkward to use in a studio production pipeline, both for asset management and render output. The issue of absolute vs relative paths was partially addressed a while back to allow Moho to find files outside of the 'project' folder but we really need a better and more flexible path system like that found in some other animation and compositing programs.

For my personal projects it's worse because I tend to work on 'synced' copies of projects at multiple locations. For example, at home on my local network, and away using a laptop's local drive or removable storage or the cloud, and unless I keep everything inside Moho's expected 'project' folder and maintain the same drive letter at the root, the project can break.

The problem is, I use a lot of programs during a production, and I don't want store all the production assets inside the Moho project's folder just to keep Moho happy. As mentioned, the developers did make an adjustment to Moho's path system and I am at least able to keep files shared by other programs outside of Moho's individual project folders, but the current system is still limiting. Moho assumes that each project file's folder is the folder that all assets should go it, but it really should allow the user to designate the actual 'project' folder (with files used for the entire production) which may actually exist several levels above Moho's project files.

Here's a generic but typical project folder structure. In this example, the folder called 'project' is the project folder, and the moho folder containing the moho project files falls below it:

- project
- - audio
- - comp
- - - s001
- - - s002
- - - s003
- - edit
- - images
- - - bg
- - - props
- - - chars
- - moho
- - - s001
- - - s002
- - - s003
- - prodNotes
- - - design
- - - storyboard
- - - notes
- - - ref
- - objects
- - renders
- - - s001
- - - s002
- - - s003
- - scenes [3D anim scenes]
- - - s001
- - - s002
- - - s003
- - tvpaint
- - - s001
- - - s002
- - - s003
- - video

In the above setup, I may have five or six programs including Moho, all referencing items from the same images, renders and audio folders, all of which here exist outside of the moho folder.

Thankfully, Moho can now remember that certain files are located outside of the project file's folder, but I think we still need a system for explicitly defining where some stuff should go.

Here are examples of path setup windows from two animation programs I use, Fusion and Lightwave:

Image

Image

I think both of these windows are overkill for what Moho should have but, at very least, Moho should let the user define where the 'Project' folder and the 'Output' folder exists, independent of where the Moho project files are located or what the current drive latter is.

Worth noting is the Auto-Detect option in the LightWave window. When this is enabled, LightWave, if the project has been moved, Lightwave will adapt to the change and find where everything exists (with the user's permission of course.) Maybe Moho could use that too?

Anyway, that's a few of my thoughts on the subject. (I guess you can tell this is one of my pet peeves.) :)
dondo
Posts: 60
Joined: Tue Jan 15, 2019 4:45 am

Re: Project organization

Post by dondo »

Thanks, Greenlaw. I have to say I'm really surprised. The typical answer here is to use relative paths. So when I import an asset, the relative path to that asset is stored in the destination moho file. Then when I in turn include that moho file somewhere else, the second destination keeps a relative path to that included moho file, and then navigates to the included asset relative to that. This means the only setup is to make sure everything has a common parent (root), and after that it all just... you know... works (unless/until you change your folder structure).

In any case, I'm still confused about how Moho keeps track of files. Looking at the commonalities between your and Slowtiger's suggestion, it looks like the idea is that we should keep all files of a given type together? Most important being that all the image/psd files should be collected together separately from the rigs, the rigs all collected together... to be honest the one file that's confusing me here is the "sc1_bg.png" in Slowtiger's example; that doesn't follow the pattern. Is that the exception because it's not shared and so can be pretty much anywhere?
User avatar
slowtiger
Posts: 6067
Joined: Thu Feb 16, 2006 6:53 pm
Location: Berlin, Germany
Contact:

Re: Project organization

Post by slowtiger »

There's only 3 reasons to put stuff in different folders:
- you don't want everything in just one project fodler
- you need to re-use stuff which shouldn't get duplicated into each project folder
- you need to work with others, and/or move project files.

If none of this applies, you can be happy with just one folder - that's the way I work with my current project.
AS 9.5 MacPro Quadcore 3GHz 16GB OS 10.6.8 Quicktime 7.6.6
AS 11 MacPro 12core 3GHz 32GB OS 10.11 Quicktime 10.7.3
Moho 13.5 iMac Quadcore 2,9GHz 16GB OS 10.15

Moho 14.1 Mac Mini Plus OS 13.5
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Project organization

Post by Greenlaw »

Yes, keeping a common root directory is part of the solution. I actually keep hundreds of project folders in a folder called 'RenderShare', so 'Rendershare' is my root folder. On my mobile drive, I have a directory also called 'Rendershare', which helps me maintain the structure of the project files when I'm working away from my home network.

However, Moho is still sensitive to the drive letter being different*, which can happen when I'm working with synced files 'off network'. I try make sure my mobile driver letter is the same as my network's drive letter, but sometimes this isn't possible or practical. Like when I'm home, and both locations can't have same drive letters. My solution has been to use a task bar utility that allows me to temporarily switch drive letters when I need to but obviously, this is not an ideal solution.

That said, it's better than how it used to be. There was a time not long ago when Moho expected EVERYTHING to be kept inside a given Moho project's folder. Fortunately, that's not the case anymore. Project/File management in Moho could still be better though.

*Edit: I'm not sure this is completely accurate nowadays. It probably is but I think lately I've been syncing project folders to a drive with a different drive letter and not having issues. Whatever I'm doing, it's been working, so let me check on that. I'll follow up with more info later.
dondo
Posts: 60
Joined: Tue Jan 15, 2019 4:45 am

Re: Project organization

Post by dondo »

Sorry to reanimate a dead thread, but I finally had time to try some of the suggestions today and nothing that I tried addressed the problem. I may be misunderstanding the recommendations, so let me ask this: what is it that defines the "root" of a project? All of my files have a common root that is relatively close, but no matter what I try after DropBox synchronizes between my and my wife's computers I have to find all of the assets for any included rigs.
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Project organization

Post by Greenlaw »

Moho considers the folder with the project file the 'root'. That's where it assumes all files are kept and it's where it will try to write output files by default. However, if files are kept outside of the project's folder, like images, it will be still able to find them after the project is saved and closed. If you move the 'outside' files, Moho will alert you when you re-open the project, and the project will need to be re-pointed to the files and re-saved.

I generally keep all the files related to a production in a single 'production' folder (like 'Scareplane' for example), and the Moho project files will be in a 'Moho' folder inside this production's folder. inside the Moho folder, I'll have separate folders for each scene in the production, and each scene will contain a Moho project file for that scene. So, each 'scene' folder is technically a Moho 'project' folder. Common files for the production, like images, are kept outside of the 'Moho' folder and in an 'Images' folder. Also outside of the 'Moho' folder are other common folders like 'Renders', 'Video', 'Audio', etc. This file structure is more or less, with some variations, is what you'd find in any production.

Ok, time for a small rant...

This is why I really dislike Moho's assumption that all files will be kept in a given project's folder...nobody actually does that. It's really annoying that Moho will try to save its output to the root of the project's folder by default when you actually want it to save files to the production's 'Render' folder or 'Video' folder. This is especially bad when the compositer or editor expecting to find the latest files in a common output directory, but the latest version got saved to the project's folder instead.

To address this, the developers added a 'recently used output path' feature in Moho Exporter. That is better than what we had before but it's still a clunky solution because it requires the user to actively select a previously used output path every time the user needs to re-render the project. This makes it too easy to render frames to the wrong location if the user forgets to select the output path or accidentally selects the wrong output path (easy to do because the list can get very long.) The other problem with the 'recently used' system is that paths eventually fall off the list, and the user will need to manually set a path again. This can quickly happen in productions with many scenes.

This caused problems for us often enough that the studio where I work finally just wrote their own render controller for Moho. But of course, this doesn't help me at home or anybody else using Moho.

Seriously, I don't understand why they can't just add an 'Output Path' box in the project's settings window where the user can set the preferred output path and forget about it. When the project is loaded into Moho Exporter, the batch queue can read the path from there and we're all good. To me anyway, this seems like a very simple fix for the problem.

Okay, rant off. :)

I hope the above info is a little helpful.

Edit: Moho also needs to stop taking its file output name from the project's file name. The really messes us up when the project file has a version number in it and we definitely DON'T want that version number included in the output's file name. This is because we typically want Moho to overwrite previous output files so the editor or compositing artist doesn't have keep manually replacing files. I probably should submit these requests to the developers again.
Last edited by Greenlaw on Mon Feb 04, 2019 6:35 pm, edited 3 times in total.
User avatar
Greenlaw
Posts: 9192
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Project organization

Post by Greenlaw »

Sorry...back to the problem you described.

Moho shouldn't have a problem finding the files in Dropbox assuming the path names to the Dropbox are identical between yours and your wife's computer, so, I'm not sure why it keeps losing the file paths. On Windows, I know this can happen if the drive letters are different...could it be something like this on your end?

Oh, it just occurred to me that Dropbox installs to the user folder by default so, yeah, in your setup Moho probably does see different paths to the project folder (assuming you and your wife use different user names). I probably haven't seen this issue on my end because I'm using Dropbox under the same user name on different computers. (I mean local computer user accounts, not DropBox user accounts.)

I don't know if this helps but sometimes I'm able to work around this particular issue for some programs that I want to share a single plugins folder with by creating what's called a Symbolic Link. This is basically a shortcut that tricks the computer into thinking that the shortcut is a real folder with the specified name and location. In this situation, the programs will think the plugin folder is local with the same path, even if it's actually at a network location (and maybe different local Dropbox location? Should work but untested by me anyway.) Maybe there's something similar for Mac?

(For Windows users, here's some more info on the subject: https://www.howtogeek.com/howto/16226/c ... -or-linux/)
Last edited by Greenlaw on Mon Feb 04, 2019 6:30 pm, edited 1 time in total.
User avatar
synthsin75
Posts: 9934
Joined: Mon Jan 14, 2008 11:20 pm
Location: Oklahoma
Contact:

Re: Project organization

Post by synthsin75 »

Yeah, if you both have your DropBox folder under your "Public" or "Shared" user, or you might even put it directly under your C drive, the paths should be the same between computers.
Post Reply