D Major Studio
  • Demo Reel
  • Gallery
  • Blog
  • Contact/Resume

Git-ing updated

9/10/2016

1 Comment

 
Over the past year I've been keeping myself busy with work and life.
I was doing some freelance work in rigging which was actually a really nice change of pace from what I have been doing in my professional career to-date.

Over the summer I continued to go rock climbing and really increased my strength/skill while eating better and maintaining myself for a little more physical longevity.

Lately I've been slacking off with publicly updating myself on the Technical front and have decided that I needed to promote myself a little better online with my coding.

I also noticed that many of my links and buttons from my blog have started to go offline which has resulted in some lost examples of my work. - Unfortunate, but not the end of the world.

This has led me to start using GitHub! - https://github.com/dmajorstudio

So far so good, there are some bumps and hiccups along the way, but my repository is healthy and now showcasing some of my random bits of code. - Little miscellaneous tools I've written from time to time. 
1 Comment

Renamer UI

4/21/2016

0 Comments

 
So, I began to play around with PyMEL recently.

As I was working through a freelance project, I had a need to do some renaming. I remembered seeing a renamer script on Chad Vernon's website in his Python for Maya Artists page.
I pulled that up, and began deconstructing it so that I could adapt it to my needs.

The following script came through after an hour or so. A renamer class with a UI which helped me to explore a few concepts of OOP and testing some functionality of UI creation.

Thanks for the initial inspiration Chad!
Renamer UI
0 Comments

More Scripting

6/3/2015

0 Comments

 
Going through some of the scripts I've written over the past few months, decided to start posting things online again.

Feel free to make use of these little bits if you find them helpful or interesting ^.^

Cheers!
Plot Curve
0 Comments

Summery of development: Mikros Image

8/27/2014

3 Comments

 
When I started working at Mikros Image in Montreal, I knew only the most basic and fundamental things about Python and hardly any MEL at all.

I feel responsible for salvaging and recording some of the lessons I've learned through my experience over the past year. I think there's untold hours spent educating myself, so I think the best way is for me to describe some of the topics I have learned in the process of writing scripts and tools for myself and my department. 
...Here goes!

Read More
3 Comments

Script Bits

8/27/2014

0 Comments

 
An interesting script I dug up today.

There was a situation where I needed to select a number of random edges from my selection to create some geometry for a more randomized effect. I didn't want to have to do it over and over again, so I wrote some quick scripting to work on the components I had selected.

I sat down and expanded on the code I started with and wound up creating a script which works not only on the selected components, but on all things selected... components, geometry etc.

I don't see any problems with this script right now. Not the cleanest implementation of the idea I think, but -shrug- that's why we learn while we're developing.

I hope someone finds it useful!
SCRIPT - Select random
Here's another one I found. - <Had to remove because link depreciated>
Fun trying to use dictionaries.
Someone who is working with particle emitters in Maya might be familiar with the frustration of "Emitting from object" and using surface emitters and then realizing that the surface you're using is not the best shape or object for the emission.

With this script, you can select your emitter and a target surface, it will disconnect the current surface and replace it with the new surface.
0 Comments

Archiving some scripts from work

8/23/2014

0 Comments

 
One of my assumed responsibilities from work was to write scripts for my own use and the use of members of my team. Now that things are winding down for me at this job, I'm going through my scripts and trying to salvage usable modular code.

A few thoughts while I'm doing this...
- Write things cleanly the first time and save some grey hairs trying to figure out what you did, why you did it, and whether you could use it on a new project later on.

- Think through logical iteration/algorithmic process before creating endless exceptions with "if <variable> == <value>:" statements...

- Raise descriptive errors if the code is executed in ways other than expected and just... dies.
(Prevents: "...uh... um... huh? <opens code, eyes glaze over>" scenario)

- Comments. What did you want to do with that function?

- Doing something more than once or twice in your function? Write a new function to handle it.
    - Add comments to explain dependencies...

- When writing tools, try to compile commonly imported self-written functions/modules to reduce the amount of gopher-tunneling.

- If there is some condition or situation needed when running script, comment on what it was.
("Oh... this doesn't work... why? Oh, because the curves selected need to be dynamic and their output has to be named with '<very specific suffix>' ...okaaaay, even though that script might have been useful, there are too many other things I need to look at to spend time setting up that situation to test the script.")

- For the love of God, comment and date updates to code in the header. Less of an issue if working with a release system or git repository or whatever which keeps track of changes. For little personal code which may be saved in more than one place, keep track of the dates and changes made. Can help prevent needing to solve the same problem/bug again.
0 Comments

Volume Shader setup

3/10/2014

0 Comments

 
Here's an example of something very screwed up in Maya...
Without going too far into it; MEL commands perform some checks when certain operations are performed. Things like... updating the available renderer UI or lists, etc. These feedbacks are done after all commands in a script are run and sometimes cause RuntimeErrors if you do not provide the MEL based check in your own script.
This is something I've wrestled with for a little while and found this morning. I'm still not convinced this is the best way to approach the problem, but here it is.

Oh, and this script takes polygon geometry and lights selected and creates/assigns a parti_volume shader, linking lights to the parti-volume to prevent errors, while changing renderer settings to work with a single click.
Volumetric shader setup
0 Comments

Review: GMH - Maya Hair Script

3/1/2014

0 Comments

 
This week there has been some commotion in the Hair/Fur world with the release of GMH 2. A tool developed by Thundercloud studio (Founded by Phung Dinh Dzung) for Autodesk - Maya.
Please allow me give a little history...

Maya GMH Hair script
In 2010 a student paper was published by Phung Dinh Dzung:
Phung Dinh Dzung - Innovation Report

In this report, a method was discussed where curve information was extracted from polygon geometry meshes and used as path information for paintFX hairSystem strokes in Maya.

From a grooming standpoint;  a need is expressed by a designer or director: "This character/creature needs hair."
Often modelers are asked to put hair on their own creations. They are familiar with the art design/direction and it makes sense to make use of the artists already at a studio. A groomer who is already familiar with modeling techniques would find a solution like this very appealing. Rather than learning convoluted methods and workflows using other software (Shave & a Haircut, Yeti, Hair Farm, 3dsMax Hair & Fur, etc.)

As Autodesk - Maya is currently the industry leader in an expandable, highly customizable, "animation-friendly," software package, Phung Dinh Dzung produced a tool for managing the workflow through this "Geometry Mesh Hair" process or "Maya GMH Script (tool)." This tool was created with MEL (Maya Embedded Language) and was written converting geometry to subD surfaces, to NURB surfaces, extracting isoparms as curves from said surfaces and assigning paintFX to those curves, etc.

The GMH Hair script can be purchased at 3D Ocean:
GMH Hair script

In my humble opinion, the code for this first tool was poorly written.
Performance of this tool is of passable quality and does more or less what was intended by the author. I have used this process myself once or twice and have had some decent results. I can't deny the results this individual has achieved on his own work.

This innovation report also helped me to understand (in broad terms) much of what was/is possible using various approaches and methods in concert.

GMH 2 Maya Hair Script
On February 25th
a trailer video was released by Thundercloud studio announcing GMH2.
GMH2 Trailer

This script can also be found on 3D Ocean:
GMH2 Maya Hair Script


This was picked up and publicized through various CG websites such as It's ART on February 27th.

*Some of what follows is speculation as I have not personally used this product yet.

From what I can see of the GUI window, the layout is much improved.

Initial misconception: "Yay! A new plugin!" Reality: This is a script tool.

Evidence from GMH1 indicates that it is a collection of MEL scripts which are executed in sequence to achieve results. The install guide indicates that after copying the folder to your scripts directory (an environment path for Maya), you should initialize the script using a MEL command/script.

When I saw the release, I was hoping that this version would be a plugin for Maya written in C++ or utilizing the Maya API in python for custom nodes etc.
Instead, I find that once again, it is using MEL (a language quickly becoming outdated although it does have direct interface with many internal Maya procedures).

This particular setup seems to be designed around the polygon mesh, using the surface grid to define growth direction and shape. Follicle (hair base) information being parented or driven by initial edge of the geometric surface using the surface normal of the subsequent face to manipulate growth direction.

The input polyMesh is being used as an intermediary object for layered processes. If this version is similar to the previous, I am assuming internal conversions are being hidden from the user, but the method is still fairly straightforward [ie: input Mesh -> possible: subD (for shape accuracy) -> NURB (parameterized surfaces) -> result path (curve)]. Maintaining connections/history to the construction or layered processes allow the input polygon mesh to be manipulated and expanded as the user deems necessary. This also allows the input mesh to be rigged/weighted. (Possible to have the meshes weighted to joint chains driven by splineIKs to give 'clump' deformations)

It bothers me that the trailer for the GMH2 hair script identifies that 'it' is compatible with mentalRay, V-Ray, and mayaSoftware. Taking advantage of the paintFX module in Maya which is already compatible with those 3 render engines is false advertising. (The script is manipulating things which already exist inside Maya and can be achieved without the use of this script)

The script itself expedites the process of grooming in a modeling workflow, giving centralized access to controls and setup of the process, accessing existing paintFX, follicle, hairSystem and shader controls. However this is display and manipulation of controllers/processes rather than creation of anything unique or original.


Here
are some potential limitations/problems; internal volumes of polygon forms (tubes, cubes, etc.)
, evaluation of non-conforming surfaces (
'L' blocks/shapes, non-rectangular polygon strips, triangles). My experience has led me to be wary of relying too heavily on the paintFX module in Maya. As a tool built using internal Maya methods and procedures, I am concerned about the stability of a tool like this.

I noticed that all the meshes in the trailer were quad-based rectangular meshes. No triangles, no varying shapes. Essentially reducing the styling flexibility to strip modeling. This is not much of a hindrance, just a limitation to keep in mind when choosing this particular grooming solution.

I am concerned about how heavy this setup can get over time. The overhead cost of maintaining history on modeled strips can be a resource hog if it is not optimized effectively.
As a mule for the paintFX module, it should not be too bad, the problem could be introduced if the result paintFX were then converted to curves to render with Renderman for example.

Now... for simulation purposes.

"GMH 2.0 is written to deal with hair shading and modeling only , we have not yet developed any in-depth dynamic workflow for GMH hair." - Thundercloud Studio
I mentioned a possible rigging solution earlier which could add some dynamic behavior. The underlying system in the GMH 2.0 is Maya's hairSystem nodes. Currently it looks like it is taking advantage of the classic hair system and doesn't utilize or deal with the creation and management of the nucleus systems. This choice is probably for the best.

Simulation should always be considered before or during the grooming process. Getting something to look nice is fine, but getting it to move after you get it looking nice is a frustration for any Technical Director.

In conclusion - Regarding GMH 1.0 and 2.0
I am always happy to see development on tools for assisting with the grooming, management and simulation of hair and fur in it's variety of applications and diversity of forms.

For introducing plenty of insight and theory about hair and it's management I am grateful to Phung Dinh Dzung and his work.

I think it is helpful to many artists to have access to this script tool and its approach.

This tool release will not have much impact on my work as a CFX Artist. I do not have any plan to make use of it now or any time in the future.
0 Comments

Sparse time in dev world

9/7/2013

1 Comment

 
Due to employment, I have had little time to pursue development on personal projects.

I was all set to get started on some of my personal projects when I got a call for a new contract! Suddenly my spare time was virtually non-existent. Life has pretty much been on-the-go since then and I have had little time for my own projects.

Hopefully over the next months (winter in Montreal) I will be able to devote more of my time and energy towards development of my own projects on the side.

Will be sure to post whatever I do end up creating here.
1 Comment

New project begins

1/12/2013

0 Comments

 
Someone has suggested some further development for me to work on! (New Challenges)
- A Maya-Based grooming tool for handling curves similar to Shave and a Haircut
- Solutions for handling braiding problems. (Proceeduraly or not)

...braiding project continued...

One night I simply could not get to sleep before I'd jotted down my notes and ideas for how to create a braiding system based on presets. Ended up talking to a coworker about it and would need to spend a great deal more time before I would even be able to approach the problem.

This one is on hold for the moment. ~Lacking knowledge to continue.
0 Comments
<<Previous

    Categories

    All
    Dynamics
    Fur
    Hair/Fur
    Scripting

    Archives

    September 2016
    April 2016
    June 2015
    August 2014
    March 2014
    September 2013
    January 2013
    March 2011

Copyright © 2016 - David Major | 778.886.8073 | [email protected]