@river: Coming back to your original question - > > Any suggestions on what data structure to store this data so that > traversing and comparing will be easy. > Any other approach you might have as suggestions are welcome.
I think that tree structures implementing python dictionaries sound a bit complicated for the task. I would suggest the plain text as is (eg. ch_mojo_Master|EyeBrow_grp|R_eyeblow_geo|R_eyeblow_geoShape) as you already have it or some other format that suits you and then use some diff tool to obtain the change through the deltas. Take a look at python standard library diff tool library - difflib <https://docs.python.org/2/library/difflib.html>. It can do the heavy lifting for you. I cannot personally vouch for it as I have not used it in production. On Thu, Dec 15, 2016 at 9:16 PM, Alok Gandhi <[email protected]> wrote: > @river - Start simple (if you do not have any rudimentary pipeline setup). > In designing pipeline (and eventually tooling for it) you need to start > light but solid with some fundamental principles incorporated. > > *Core Tenets* > Three things are of fundamental importance - Scalability, Reliability, and > Security. Each of these aspects should be addressed. > > *Scalability* - The pipeline should be able to handle 10 shots as easily > as it should 2000. Although, from the get go it is not easy to design for > future proofing the data quantity but still you should pay some heed to it > > *Reliability *- The data should be reliably stored and backed-up. In the > case of database outages, the pipeline should be able to recover itself as > quickly as possible. If possible, there should be no central point of > failure - go as distributed as possible(git is a wonderful example of such > a distributed system). With Cloud Computing now becoming affordable and > secure each day, you can take a look at it also. > > *Security* - Protecting the IP is important. User / Tool permissions to > access the database should be implemented in the most secure way. This > could start by harnessing the power of the os user permission (in the case > of folders). Users should not be able to access the data only tools should. > If you are using a database, most of them have this inbuilt, look at their > relevant APIs. > > *Tools* > Some basic tools need to be designed - > > *Publishers *- For exporting data from DCCs / Departments. Naming > conventions and validity checks are the first part, then comes the part of > exporting the data to a database. > > *Builders/ Importers *- For importing data into DCCs, basically looking > up the data in a database (these can be as simple as folders or as complex > as large database spread on huge servers)., retrieving it and then > importing it in the scene. > > *Versioning* > It also worth mentioning that versioning system is of uttermost importance > here as well, do keep in mind what kind of versioning framework you are > going to use. It should allow easy versioning operations like versioning up > or down and should be intuitive to the artists. They should be able to > easily access and use any old version and also able iterate over versions > of their work/tasks in the simplest possible way. Again, look at the design > principles used in git for versioning. If whole Linux Kernel can depend on > it, so can a pipeline. > > *Inter Studio Data Flows* > While talking of inputs and outputs, do mind that at times most modern > pipelines have both 'inter-' and 'intra-' data flows. Meaning, you have > intra-departments data flows in your studio, but also there is the case of > inter-studio transfers. Collaboration is a growing trend in our industry. > Even the biggest studios these days are outsourcing their work to smaller > shops. This means you should be able to efficiently handle and transfer > back the data coming from and to an outside studio. Most of such transfers > employ industry-accepted cutting-edge formats like alembic. Thankfully our > industry has encouraged and embraced open source projects more than any > other. > > *Free Open Source Projects* > There is a host of open source projects, big and small, helping you to > facilitate such pipelines. Alembic is just one them. Also, USD from Pixar > is gaining popularity since it has gone open source. In short, don't > reinvent the wheel, use already available libraries to your advantage. This > can save huge time and development costs. > > *Pipelines are living entities* > Pipelines are a complex system and have a life of their own. They evolve > over time responding to various production pressures. You cannot think of > every possible requirement before it comes to haunt you, but you can surely > design loosely coupled components (as generic as possible) so that it can > evolve easily. You are never allowed to say no. > > *The Human Element* > Pipelines have two brains (just like us human have left and right brain). > One is the free flowing, creative, innovative side and the other is > logical, calculating and rational. Both of these, fight with each other all > the time. The resulting conflict causes the pipeline to evolve. The human > side is the artist, they need fewer buttons on the UI, simplified workflows > and be able to focus on their art rather than the technology. Tool design > should take care of this. On the other hand, there is the database, the > data, the metadata and all the stuff like versioning systems, naming > conventions, data access, io operations that need to be designed in the > most rational, pragmatic and logical way possible. A good pipeline > constantly tries to broker peace between these satisfying the common > denominator. And of course to wreck all of this are 'the clients'. They are > paying and are the boss. They can and do demand most outrageous things and > ask it to be delivered at exactly 2.37am the next morning. Do account for > that also. > > Finally, > *import this* > It would be a disservice to write on the *python*-inside-maya group, > without mentioning the awesomeness of python. Go to your REPL and type > `import this`. Read carefully the stuff that your REPL spits out. Called > 'Zen of Python', these are like the 'ten commandments' (only better, these > are 20) of the religion called python. These apply to any design process. > Each one is a gem and most of them pertain to pipeline design. Timeless in > nature, these are relevant to any sort of engineering. Think about them and > how they apply to your pipeline design. Use them in your pipeline and thank > Tim Peters for writing 19 of them. > > These are my thought, quickly written and somewhat incohesive, but I hope > they help. > > Good luck! > > - Alok. > > On Thu, Dec 15, 2016 at 8:09 PM, river bell <[email protected]> wrote: > >> hey Neil, >> >> First up thanks for the excellent input. >> Barring a few doubts we have to surely consider this approach soon. >> >> We do reference the rig for animations >> I have found that the name change also happens in the texture dep. >> >> From what i know yet alembic needs model uvs in place so the idea of >> texturing and rigging and animation running in parallel was not possible >> and therefore not considered as of yet. >> I am in a position to research and introduce a better pipeline so will >> delve this way for sure too >> >> Thanks >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Python Programming for Autodesk Maya" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit https://groups.google.com/d/ms >> gid/python_inside_maya/3046793b-0896-45f3-9484-efe8a54ea58a% >> 40googlegroups.com >> <https://groups.google.com/d/msgid/python_inside_maya/3046793b-0896-45f3-9484-efe8a54ea58a%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > -- -- You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPaTLMSjCShxpWgmpzwggrVkoSBvmAGsdkzkhDOW6a8vfA5C_Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
