Spending most of this week trying to deal with the farm, I feel like I have made significant progress towards making it work a little bit. On Friday, I met with Rob Dlugos from IT, and he has made several fixes to the farm already. The frequent network drops have been the bane of this project from the start, and also seem to cause many of the server-related issues with the farm computers. The fact is, any organization with a farm of our size would have a dedicated wrangler, or at least be under the control of the people who utilize it the most. IT, being in an unrelated department, and being ultimately responsible for the entire college, cannot continue to be the ones responsible for the farm’s well being, unless the department wants all the students to render with local batch jobs. However, while many other jobs have had issues, this one came back nicely.
Here is the nuke comp script for this shot:
Here is a quick comp of some reactor machinery.
I also took some extra time to start working on a script that can check files for error causing nodes, such as the RenderMan nodes. It runs using Maya’s own Python interpreter and uses Maya’s standalone feature, which runs maya in headless mode. Maya, being fairly crashy, has made me reconsider this, and if I went back, I would have written the script to simply parse Maya ASCII files instead, using the standard python interpreter. Anywho, the script is on my GitHub for perusal purposes.
def main(): # Debugging setting is very necessary for me, as I make a lot of mistakes flg = setup_log("logging.DEBUG") search_dir = '//awexpress.westphal.drexel.edu/digm_anfx/SPRJ_cgbirds' flg.debug("Initializing Maya") # Starts interpreter mcs.initialize(name='python') flg.info("Maya Initialized") # The filename is generated by another function based on the time that the script is run output_file_name = gen_file_name() test_file(output_file_name, search_dir) files = get_ma_files(os.path.normpath(search_dir)) results = [] flg.info("Getting List of Unwanted Nodes") bad_types = bad_types_list() flg.info("Searching Files") i = 0 j = 1 # Splits the file list into chunks, though 250 might still be two large chunked = split_chunks(files, 250) for c in chunked: flg.debug("Searching Chunk {} out of {}".format(j, len(chunked))) for f in c: print("{} out of {} files".format(i, len(files))) results.append(search_file(f, bad_types)) i += 1 flg.debug("Compiling results for chunk {}".format(j)) comp_res = compile_results(results, '\r', '*' * 150, "Chunk {} out of {}".format(j, len(chunked)), '*' * 150, '\r' ) array_to_file(comp_res, output_file_name) j += 1 mcs.uninitialize() flg.info("Maya uninitialized") if __name__ == "__main__": main()
I also spent a day to make my XGen script cross-platform compatible, so that hair can be added to scenes on windows.
Hours Breakdown:
- Environment Surfacing – 4:00
- Technical Directing – 32:30
- Adviser Meeting – 1:30
- Group Meeting (Dallies) – 3:00
- IT Meeting – 0:30
- Paperwork – 2:30
- Render Farm work – 4:00 (Chris asked me to clock this separately on Saturday, so much of my time for this task was clocked under Technical Directing this week)
Total: 47:00