Topic outline

  • Kia ora Guest user

    Welcome to CGI506 Technical Development 1, S2-20. In this course you will be developing basic skills and knowledge of programming for animation and game development and to develop custom tools and functions for a successful production pipeline.

    On completion of this course you will be able to:

    1. Investigate and compare different programming languages used for animation, visual effects and real time applications. 
    2. Evaluate the effectiveness of different scripting/programming languages for selected applications. 
    3. Select and use a number of different scripting languages to achieve the desired effects and tools.  
    4. Create custom tools to facilitate a production scenario. 

    Alongside the class time and your project work, you will be provided with extra learning material, videos and tasks to help you improve your skills.  Work at your own pace spending roughly 4 hours a week on these. 

    All courses in this programme include an assessment of professionalism. Professionalism includes your active engagement in class activities, your ability to communicate with your peers and tutor, how you work in a team and more importantly how you manage your self.

    Usually we cover one session per week. Note this course content and schedule, may be adjusted as we understand more about our needs as a group of learners. 

  • Welcome to the first week of Technical Development for pipeline.

    We're going to be learning about the technical aspects of pipeline, equipping you with the tools to automate tasks and develop your own tools, which will make you more capable in this exciting industry.
    There are perhaps three ways technical skillsets can be loosely conceptualized in our industry.

    • Technical Artists: These are the definitive workforce at any studio. They primarily complete creative tasks, however they may use a line of code here, a snippet there, to accelerate their workflows and increase their value to the companies they work for. Additionally, because they develop their own workflows for increasing productivity in their own realms, they can become indispensable for their employers with their skill sets.
    • Technical Developers/Directors: Also known as Pipeline Developers, developers provide the backbone of any studio's pipeline, helping data flow from point A to point B, researching and developing novel workflows, and debugging production issues. At a junior level of pipeline developer may be concerned with making tools for artists, dialog boxes that gather information and buttons that automate things. At an advanced level pipeline developers may do work with database interfaces, production tracking, web applications, mass data processing, and so on.
    • Programmers: Typically specialists with a computer science background. You are more likely to see programmers working on low level tasks like memory management, pixel processing, rendering engines, database schema, production engineering, and so on. Programmers are likely required to have advanced knowledge of mathematics and computer science.

    Our goal here is not to turn you into programmers, but to give you additional technical skills which will help you work more effectively and give you an edge. And at the more advanced levels 6 and 7 in this degree, technical developers will be taught skills suitable for a pipeline developer position in a studio. But for now, by giving you the keys to APIs, you will be capable of doing things which most other people cannot do.

    Reasons to code

    https://youtu.be/Dv7gLpW91DM

    What is the difference between Scripting and Programming languages?
    Terminologies may vary around the world, but we define this as thus:
    A programming language is one which requires compiling into machine byte code in order to be run on a computer. They are more specialized, but require more work.
    A scripting language is one that can be interpreted by the computer and run directly by the user, with any optimization happening invisibly. They usually run in a special scripting environment, and are optimized for the user to write efficiently.
    Python gets a special mention here, because it happens to have its feet in both camps. Developers call it a general-purpose programming language that is "also used for scripting". There is good reason why Python is catching on as the language of choice for many industries, not just in games, animation, and VFX.

    Mental Models
    To succeed in our industry you will be well served by a lifestyle of open-minded curiousity about the world we live in. Take your time, experience daily life with open eyes.
    Notice and develop an interest in phenomena. See how light interacts with objects, how wind affects a tree, how flower petals form. Note how vines grow, how ocean waves move. The changing reflectiveness of water surface.
    This sort of knowledge will help inform your mental models of reality, in turn increasing your effectiveness as a technical artist or pipeline developer.

    Overview of Scripting Languages

    Conventionally low level languages have been defined as machine readable code, and high level meaning human readable code. Perspective is relative, however and one can still think of C++ as being lower level than Python. Or additionally that scripting languages are higher-level then programming languages.

     levels_languagges

    Most software packages are written from the ground up in C++ and compiled, or built, for specific operating systems versions. But the applications we are most concerned with implement a more user-friendly scripting interface through an API, or Application Programming Interface. This can either be accessed using the applications native language (e.g. MEL for Maya) or through any other implemented language, most commonly Python.

    Many companies integrated their own proprietary languages into the packages to give end-users more ability. Here is a quick list of packages and their supported languages, with bold indicating native (specialized) language for that package only:

    Blender : Python
    Houdini : HScript, VEX (C++), Python
    Maya : MEL, Python,
    Nuke : TCL, Python
    Unity : C#, UnityScript (JavaScript), Boo
    Unreal : BluePrints, C++, Python

    Notice something in common between almost all of them? Python! But before we get there, we are going to begin with MEL in order to lay a better foundation for understanding APIs moving forward.

    Introduction to MEL in Maya
    Time to get practical and open up Maya.

    https://vimeo.com/302734048

    The first thing one must always do in a new language is attempt to run a "Hello World" program. For MEL this is pretty simple:

    print "Hello World";

    Next up, a brief introduction to the Script Editor in Maya, command history, writing commands, and dropping into the Shelf.

    MEL API Documentation:

    This is an important resource to have open while you explore the Maya command history and begin to write your own scripts.

    http://help.autodesk.com/cloudhelp/2018/ENU/Maya-Tech-Docs/Commands/

    Using proc to declare functions (collections of commands)
    https://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/mel/PROC_procs.html

    Tutorial: 3D fractal cubes
    https://www.instructables.com/id/Introduction-to-MEL-Scripting-in-Maya-3D-Fractals/

    Exercise idea:
    Abstract artwork using the rand function

    Exercise idea:
    Automatically duplicate by writing a function which interpolates between object A and object B and makes X number of duplicates between in Translation. Bonus: Also interpolate Rotation and Scale.

    Glossary:
    API Application Programming Interface
    3D Three Dimensional
    MEL Maya Embedded Language
    CG Computer Graphics
    OOP Object Oriented Programming
    VFX Visual Effects
    OBJ The Wavefront 3D object file format is good I have I think the first module almost done for text
    FX Effects
    GUI Graphical User Interface
    DAM Digital Asset Management
    FPS Frames Per Second
    DCC Digital Content Creation
    TCL Tool Command Language
    IDE Integrated Development Environment
    R&D Research and Development
    VEX Vector Expression Language
    FBX Autodesk Filmbox file format
    ILM Industrial Light & Magic