RIS shading Series #2 Meet The Plugins

Size: px
Start display at page:

Download "RIS shading Series #2 Meet The Plugins"

Transcription

1 RIS shading Series #2 Meet The Plugins In this tutorial I will be going over what each type of plugin is, what their uses are, and the basic layout of each. By the end you should understand the three basic types of RIS plugins and the elements that set them apart and make each useful. In addition I will touch on how the plugins interact and give the user a vast amount of control over the rendering process. If at any point you find outdated or incorrect information please let me know on the forum, any feedback is appreciated. Note: I will use the terms node, plugin, extension, and shader interchangeably throughout to represent a compiled dynamically linked library (.dll or.so) that is used by Renderman to define a portion of its rendering process. Warning!: This is a dense article so please take you time and try to understand what is being said before moving onto the next part of this series. I will try not to repeat information that is covered in this document but instead spend time on new material. If at any time I am not making any sense you can ask on the forum and I will be happy to respond. Alternatively Pixar does maintain some documentation located here if you need something explained in a different way. Part 1: Pattern Plugins (or, the one that everyone will make creative things with): Pattern Plugins make up the majority of the RIS plugins. By the numbers there are 80 plugins present in PRMan 20.7 and 45 of those are of the pattern verity. These nodes provide the rest of the shading system with procedural or texture information and modify that same data in some way. For example, take the PxrTexture node. It loads texture information from a file than another pattern shader such as PxrExposure or PxrInvert can change that texture in certain ways. After all that is done the result will be passed to a BXDF shader such as PxrDisney. These shaders are the means by which artists feed non-constant information to BXDF nodes. So with this mindset lets take a close look at a bare bones pattern plugin. If you are not familiar with how C++ implements classes you might want to review that before continuing forward. Also all of the plugins that I will show have the definition and declaration in one file. This may not be good practice for C++ but it makes everything more readable. For more complex plugins you will want to split everything into proper headers and source files.

2 So taking this line by line we can start from the beginning. Line 1 is an include for a Pixar declared header required for Pattern type shaders. In that file you can find the parent of the class we are defining here. One Line 3 we can see a fairly typical class definition line that is a child class of RixPattern. Moving onto Lines 7-8 we have the basic constructor and destructor. On line 10 we have a public function called Init that takes in a RixContext object and a char array pointer that points to the location of the plugin. The RixContext object provides us with some useful tools for interacting with Renderman but we will talk about this more in the next tutorial. Init is primarily used to set up your plugin before any rendering happens. Line 11 defines a function called GetParamTable. This function allow your plugin to define what inputs should be passed to it by the user more on using this later. Line 12 has the finalize function. Finalize is called after compute is done before the plugin destructor is called. Finally we have the ComputeOutputParams function. This is called for each sample of your pattern and what is calculated here is sent to the nodes up the chain. Now lets go into the implementation of this plugin. Moving right along we have a basic constructor, destructor and Init functions. We are really doing nothing here in this example but in plugins that are more than a hello world you should declare and initialize your non-changing parameters and objects in one of these functions.

3 For lines we have the GetParamTable function. You can think of this as your means of setting up an input stream for you plugin (not technically accurate but a good way of thinking about it.) All that you need to do in this function and this goes for every plugin type is create a RixSCParamInfo object that contains a list of elements that corresponds to your inputs and outputs. For example, in this pattern I am taking in one float value as an input and passing one float as an output. For a RixSCParamInfo object all you need to give it is the parameter name, the data type you parameter is (Float, Int, etc.) and whether it is an output or not. You can leave the last one off if it is an input as you can see on line 45. At the end of your list make sure to cap it with an empty RixSCParamInfo to indicate the end of the list. After that all you need to do is return this list and your inputs are now set up. On lines is an enum that functions to keep track of our input and output parameters. I strongly recommend using an enum as it makes keeping your inputs and outputs organized much easier. When you see the finalize function in any plugin, just think of it as your first destructor. It is made to finalize or destroy anything you created in the Init function as it has access to a RixContext object.

4 Now we come to where the action is at. In this example all we want to do is output some constant float to the next node. In order to do this we must set up a pool object (line 72) and use it to get the objects that will be bound in memory. The output spec will be that object (line 73). We must also set the outputs pointer to the outputspec instance and the noutputs to the number of outputs we have (lines ) This step tells Renderman where and how many outputs to expect. Now we can create a RtFloat pointer (simply a renamed float type) for our result (76-77.) By setting the attributes of o we effectively tell RIS where everything is and what type of parameter to expect (78-80.) On lines we go through every point that needs shaded and assign them to 1.0. At the end of the basic pattern we have two macro functions create and destroy. All these do is allow Renderman to create and destroy an instance of your plugin. The create a destroy macros can be found in quite a few plugins so it is a good idea to know what they look like. Part 2: BXDF Plugins (or what you will spend countless hours trying to understand)

5 Now that we understand how pattern plugins provide data to BXDFs we now have to answer the question of what do they do with that information. The end result of a BXDF plugin is to provide or return information to the integrator about the material of the object based on other shaders and geometry information. The basic BXDF we will look at in this tutorial is a simplified version of the PxrConstant which outputs only a single color. There are many more things you can do with BXDF's but for sanity s sake I will keep it simple with no shading calculations. A BXDF shader is broken up into two parts the first is a BXDF factory and the second is an evaluator object. The factory's job is to create an instance of the BXDF for the integrator to call upon in order to get information on different lobes for the material. Lobes provide information on a certain aspect of a material such as diffuse or specular information. The evaluator, or BSDF will actually perform the calculations for the BXDF and send that information back to the factory instance. This is how a simple BxdfFactory class is setup. The factory when it is instanced by the integrator will construct itself and initialize data using Init, GetParamTable, Finalize and CreateInstanceData. Inside CreateInstanceData is where decisions are made to differentiate each instance from one another. For example for different PxrConstant nodes you might have one that needs varying presence information while another might be completely present which allows Renderman to skip calculations where it can to speed up the render. The GetInstanceHits is the function that simplifies the job of sampling by allowing the integrator to get hints from the shader such as instance information. Since BXDF's can be working on multiple threads there is a Synchronize function to make sure all instances are working with the right information. The Scatter and Opacity functions are the ones that perform the work of the BXDF by calling the evaluator and passing that information on the Integrator. We will take a quick look at the evaluator but don't worry about understanding everything being done at the moment.

6 The evaluator is responsible for providing surface information for each lobe that the BXDF is called upon to solve for. In this example since we have the PxrConstant shader all of the shading information is a constant color that is unaffected be lighting and other considerations. So for each EvaluateSample call this shader simply sets each lobe to not used and moves on. The only activity is in the EmitLocal function where the color that the user passed in is used to set the emit color for the material. There is a lot here even for a simple material so don't worry to much about the fine details. For the time being just understand that based on passed in information the shader evaluates lobe information for each sample and passes that information to the integrator. Part 3: Integrator Plugins (where everything comes together into a huge mess of debugging ;) ) We can now talk about the mastermind of the plugins, the Integrator. This is where you manage all of that data we collect through the pattern, BXDF and other plugins. In addition to this data the integrator also can, like the other plugins, pull data from the scene objects to help refine your final image. I will not spend a lot of time on the integrator just because it is a complex beast and should be explained more thoroughly later once we have a more complete understanding of the other components.

7 An integrator plugin includes both its own header and that of the bxdf since it must take in the information from that shader type. Having the shading utilities from RixShadingUtils.h also makes the code much more readable by using abstract data types. It starts with a standard constructor destructor combo. Init GetParamTable, and finalize are the same as they always are. The unique stuff begins with RenderBegin and Render End. In these functions we set up the displays that RIS will use. When I say display I mean either a file or any number of programs that Renderman can output display information to. For a complete list of displays look here. RenderEnd as you might have guessed is where we clean up anything we did in RenderBegin. The Integrate function acts like any one of the evaluate functions previously mentioned for the pattern and BXDF shaders. The execution of an integrator proceeds like so. First the integrator is created and constructed. Second, the Init function is called at the appropriate time. Third, GetParamTable is called. Fourth, RenderBegin is called and the integrator sets up its display outputs. Fifth, the Integrate function is called upon to get the color, opacity etc. information from the bxdf nodes and pass it along to the display driver. After that all of the clean up functions are called to destroy what was left behind. The explanation was bit brief but this is a large topic and I can't do it justice with just a few paragraphs. I will have a dedicated tutorial on this topic eventually but until then you can get more information in Pixar's documentation or in the RixIntegrator.h file. Going forward just understand that the execution of all BXDF and pattern plugins are controlled by the Integrate function inside the Integrator. Part 4: What we missed (A result of not having all the time in the word) I understand that I left out quite a bit on how to actually make anything useful with these shader shells. The reason for this is that talking just about how RIS works with its plugins should give you a

8 solid grounding so that the math that goes into the shaders will not be confused with Renderman centric code that way you can easily port your knowledge to other areas of programming and apply anything you already know to RIS now. You might have noticed in the Renderman directory that there are more than just these three types of nodes. There are many other types but since they are not quite as straight forward they will not really be focused on during the remainder of this series. Briefly below I will list the other types. If you want more information you can look at the shader examples that Pixar has provided for that type. Light: This shader is your one stop shop for making custom lighting simulations. Have you ever wanted light to work differently well here you go. Since this plugin is likely to change soon I will not delve any deeper for the time being. Projection: When you set up your scene one of the most important pieces is how you set up your camera. This plugin provides you with the means of changing the camera setup in drastic ways. But since the PxrCamera covers almost all cases for a physically based camera system I will leave this type of plugin till later on in the series (see series chart.) Part 5: Practice Projects (Testing your brain cells) Note: Most of these projects will require you to compile the shaders into linked libraries. You should probably make sure your development environment works before attempting any of these projects. Also the solutions to the second problem can be found in the answers folder of the tutorial file. 2.1: Now that you have the basic idea of how each shader type works, you should be able to take the development environment from part one of this series and compile an example plugin. I would recommend the example pattern plugin as it can be tested fairly easily. In order to use and test the shader you will need an.args file to go with the plugin. You can find a provided.args file in the tutorial files. Remember to add the.args file to both the Renderman server directory and the Renderman studio directory if you are using Maya. 2.2 At this point you should have enough knowledge to change around the basic shaders that I have provided. This exercise involves you setting up a shader in the following way. The pattern shader should have three outputs one with an output of 1.0 and the second with an output of 0.5 and the third with an output of 0.0. The resulting node should be connected as a color to the PxrConstant BXDF node with the inputs serving the role as red, green, and blue respectively. You need not do anything with the integrator or BXDF at this point and should stick with the path tracer integrator and PxrConstant for testing your node. Your result should look something like this when applied to a simple sphere on a black backdrop.

9 Hints: In order to get the float output converted to a color you can use the PxrToFloat3 node. Don't forget to use the problem 2.2 args file to make your plugin show up in Maya, Katana or Blender. Also don't forget to name everything the same so Renderman will use the correct shader. A solution file can be found in the answers folder. Part 6: Moving Forward If you have made it this far congratulations. I know it seems like I left you with more questions than answers but in the next few lessons I hope to start answering some of them. As we continue forward we will be moving from the realm of theory and onto more concrete examples. If you have any questions or concerns with what was presented please let me know and I will be happy to address them. Till next time happy rendering!

2SKILL. Variables Lesson 6. Remembering numbers (and other stuff)...

2SKILL. Variables Lesson 6. Remembering numbers (and other stuff)... Remembering numbers (and other stuff)... Let s talk about one of the most important things in any programming language. It s called a variable. Don t let the name scare you. What it does is really simple.

More information

Practical 2: Ray Tracing

Practical 2: Ray Tracing 2017/2018, 4th quarter INFOGR: Graphics Practical 2: Ray Tracing Author: Jacco Bikker The assignment: The purpose of this assignment is to create a small Whitted-style ray tracer. The renderer should be

More information

Customizing DAZ Studio

Customizing DAZ Studio Customizing DAZ Studio This tutorial covers from the beginning customization options such as setting tabs to the more advanced options such as setting hot keys and altering the menu layout. Introduction:

More information

Digital Mapping with OziExplorer / ozitarget

Digital Mapping with OziExplorer / ozitarget Going Digital 2 - Navigation with computers for the masses This is the 2nd instalment on using Ozi Explorer for digital mapping. This time around I am going to run through some of the most common questions

More information

What is the Deal with Color?

What is the Deal with Color? What is the Deal with Color? What is the Deal with Color? Beginning from the beginning Our First Moves Diffuse Object Colors Specular Lighting Transparency Paint on Image Those sliders and things Diffuse

More information

The Stack, Free Store, and Global Namespace

The Stack, Free Store, and Global Namespace Pointers This tutorial is my attempt at clarifying pointers for anyone still confused about them. Pointers are notoriously hard to grasp, so I thought I'd take a shot at explaining them. The more information

More information

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Hello, today we will create another application called a math quiz. This

More information

AR-media TUTORIALS IMPROVING REALISM AMBIENT OCCLUSION. (June, 2011)

AR-media TUTORIALS IMPROVING REALISM AMBIENT OCCLUSION. (June, 2011) AR-media TUTORIALS IMPROVING REALISM AMBIENT OCCLUSION (June, 2011) Copyright Copyright 2008/2011 Inglobe Technologies S.r.l. All rights reserved. No part of this publication may be reproduced, transmitted,

More information

Programming Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science Indian Institute of Technology, Madras

Programming Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science Indian Institute of Technology, Madras Programming Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science Indian Institute of Technology, Madras Module 12B Lecture - 41 Brief introduction to C++ Hello, welcome

More information

Texturing laying out Uv's part I - Levitateme

Texturing laying out Uv's part I - Levitateme Texturing laying out Uv's part I - Levitateme In this tutorial, I am going to try and teach people my method of laying out uvs. I think laying out uvs is a art form, I think everyone has there own style,

More information

galileo Design Document Solomon Boulos

galileo Design Document Solomon Boulos galileo Design Document Solomon Boulos 1 Contents 1 Introduction 3 2 Overview 3 3 Code Organization 4 3.1 Core.................................................. 4 3.1.1 API..............................................

More information

Notes from the Boards Set # 5 Page

Notes from the Boards Set # 5 Page 1 Yes, this stuff is on the exam. Know it well. Read this before class and bring your questions to class. Starting today, we can no longer write our code as a list of function calls and variable declarations

More information

DOWNLOAD PDF EXCEL MACRO TO PRINT WORKSHEET TO

DOWNLOAD PDF EXCEL MACRO TO PRINT WORKSHEET TO Chapter 1 : All about printing sheets, workbook, charts etc. from Excel VBA - blog.quintoapp.com Hello Friends, Hope you are doing well!! Thought of sharing a small VBA code to help you writing a code

More information

MITOCW MIT6_172_F10_lec18_300k-mp4

MITOCW MIT6_172_F10_lec18_300k-mp4 MITOCW MIT6_172_F10_lec18_300k-mp4 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for

More information

Blitz2D Newbies: Definitive Guide to Types by MutteringGoblin

Blitz2D Newbies: Definitive Guide to Types by MutteringGoblin Blitz2D Newbies: Definitive Guide to Types by MutteringGoblin Types are probably the hardest thing to understand about Blitz Basic. If you're using types for the first time, you've probably got an uneasy

More information

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

mayatocorona Manual Version 0.1

mayatocorona Manual Version 0.1 Manual Version 0.1 Haggi Krey February 2014 Last Update: 02/2014 www.openmaya.de 1.0 Introduction...3 2.0 Installation...4 The global env way...4 The maya module dir way...4 3. First Steps...6 4. Features...7

More information

(Refer Slide Time: 00:51)

(Refer Slide Time: 00:51) Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute Technology, Madras Module 10 E Lecture 24 Content Example: factorial

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module

More information

Advanced Distant Light for DAZ Studio

Advanced Distant Light for DAZ Studio Contents Advanced Distant Light for DAZ Studio Introduction Important Concepts Quick Start Quick Tips Parameter Settings Light Group Shadow Group Lighting Control Group Known Issues Introduction The Advanced

More information

Mastering Truspace 7

Mastering Truspace 7 How to move your Truespace models in Dark Basic Pro by Vickie Eagle Welcome Dark Basic Users to the Vickie Eagle Truspace Tutorials, In this first tutorial we are going to build some basic landscape models

More information

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No # 09 Lecture No # 40 This is lecture forty of the course on

More information

CS140 Final Project. Nathan Crandall, Dane Pitkin, Introduction:

CS140 Final Project. Nathan Crandall, Dane Pitkin, Introduction: Nathan Crandall, 3970001 Dane Pitkin, 4085726 CS140 Final Project Introduction: Our goal was to parallelize the Breadth-first search algorithm using Cilk++. This algorithm works by starting at an initial

More information

Lesson4:CreatinganInterfaceandChecklistService

Lesson4:CreatinganInterfaceandChecklistService Lesson4:CreatinganInterfaceandChecklistService We have the majority of our template for the application set up so far, but we are also going to need to handle the "logic" that happens in the application.

More information

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet. Mr G s Java Jive #2: Yo! Our First Program With this handout you ll write your first program, which we ll call Yo. Programs, Classes, and Objects, Oh My! People regularly refer to Java as a language that

More information

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE Program 10: 40 points: Due Tuesday, May 12, 2015 : 11:59 p.m. ************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE *************

More information

Without further ado, let s go over and have a look at what I ve come up with.

Without further ado, let s go over and have a look at what I ve come up with. JIRA Integration Transcript VLL Hi, my name is Jonathan Wilson and I m the service management practitioner with NHS Digital based in the United Kingdom. NHS Digital is the provider of services to the National

More information

Linked Lists. What is a Linked List?

Linked Lists. What is a Linked List? Linked Lists Along with arrays, linked lists form the basis for pretty much every other data stucture out there. This makes learning and understand linked lists very important. They are also usually the

More information

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides for both problems first, and let you guys code them

More information

Relationship of class to object

Relationship of class to object Relationship of class to object Writing and programming Writing a program is similar to many other kinds of writing. The purpose of any kind of writing is to take your thoughts and let other people see

More information

(Refer Slide Time: 01.26)

(Refer Slide Time: 01.26) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture # 22 Why Sorting? Today we are going to be looking at sorting.

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur Lecture 14 Default Parameters and Function Overloading

More information

Citrix Connectivity Help. Table of Contents

Citrix Connectivity Help. Table of Contents Citrix Connectivity Help Table of Contents I. Purpose of this Document II. Print Preview Freezing III. Closing Word/ PD² Correctly IV. Session Reliability V. Reconnecting to Disconnected Applications VI.

More information

Get JAVA. I will just tell you what I did (on January 10, 2017). I went to:

Get JAVA. I will just tell you what I did (on January 10, 2017). I went to: Get JAVA To compile programs you need the JDK (Java Development Kit). To RUN programs you need the JRE (Java Runtime Environment). This download will get BOTH of them, so that you will be able to both

More information

Caustics - Mental Ray

Caustics - Mental Ray Caustics - Mental Ray (Working with real caustic generation) In this tutorial we are going to go over some advanced lighting techniques for creating realistic caustic effects. Caustics are the bent reflections

More information

CS Programming Exercise:

CS Programming Exercise: CS Programming Exercise: An Introduction to Java and the ObjectDraw Library Objective: To demonstrate the use of objectdraw graphics primitives and Java programming tools This lab will introduce you to

More information

TITLE CLOUD BASED VIDEO ANIMATION RENDERING MANAGEMENT SYSTEM INVENTOR: Thomas Ryan Mikota, of Orem Utah

TITLE CLOUD BASED VIDEO ANIMATION RENDERING MANAGEMENT SYSTEM INVENTOR: Thomas Ryan Mikota, of Orem Utah ATTORNEY DOCKET NO. 5199.FACT.PR TITLE CLOUD BASED VIDEO ANIMATION RENDERING MANAGEMENT SYSTEM INVENTOR: Thomas Ryan Mikota, of Orem Utah 1 The operating system (or user interface) stores most different

More information

CIT 590 Homework 5 HTML Resumes

CIT 590 Homework 5 HTML Resumes CIT 590 Homework 5 HTML Resumes Purposes of this assignment Reading from and writing to files Scraping information from a text file Basic HTML usage General problem specification A website is made up of

More information

If Statements, For Loops, Functions

If Statements, For Loops, Functions Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements

More information

Dissolving Models with Particle Flow and Animated Opacity Map

Dissolving Models with Particle Flow and Animated Opacity Map Dissolving Models with Particle Flow and Animated Opacity Map In this tutorial we are going to start taking a look at Particle Flow, and one of its uses in digital effects of making a model look as though

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

Manual Vba Access 2010 Close Form Without Saving Record

Manual Vba Access 2010 Close Form Without Saving Record Manual Vba Access 2010 Close Form Without Saving Record I have an Access 2010 database which is using a form frmtimekeeper to keep Then when the database is closed the close sub writes to that same record

More information

Chapter 17: The Truth about Normals

Chapter 17: The Truth about Normals Chapter 17: The Truth about Normals What are Normals? When I first started with Blender I read about normals everywhere, but all I knew about them was: If there are weird black spots on your object, go

More information

Creating accessible forms

Creating accessible forms Creating accessible forms Introduction Creating an accessible form can seem tricky. Some of the questions people commonly ask include: Can I use protected forms? How do I lay out my prompts and questions?

More information

FAQ - Podium v1.4 by Jim Allen

FAQ - Podium v1.4 by Jim Allen FAQ - Podium v1.4 by Jim Allen Podium is the only plug-in to run natively within SketchUp, and the only one to have a true 'one click' photorealistic output. Although it is about as simple as you can expect

More information

Chris' Makefile Tutorial

Chris' Makefile Tutorial Chris' Makefile Tutorial Chris Serson University of Victoria June 26, 2007 Contents: Chapter Page Introduction 2 1 The most basic of Makefiles 3 2 Syntax so far 5 3 Making Makefiles Modular 7 4 Multi-file

More information

Project Collaboration

Project Collaboration Bonus Chapter 8 Project Collaboration It s quite ironic that the last bonus chapter of this book contains information that many of you will need to get your first Autodesk Revit Architecture project off

More information

Post Experiment Interview Questions

Post Experiment Interview Questions Post Experiment Interview Questions Questions about the Maximum Problem 1. What is this problem statement asking? 2. What is meant by positive integers? 3. What does it mean by the user entering valid

More information

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example

More information

SUPER SAVE TOOLS Super Save Your Scenes, Super Save Your Time!

SUPER SAVE TOOLS Super Save Your Scenes, Super Save Your Time! SUPER SAVE TOOLS Super Save Your Scenes, Super Save Your Time! Super Save 1 I. In brief, what are Super Save Scripts? Super Save Scripts are Daz Studio 4.9 and above smart saving tools and display comment

More information

Week - 01 Lecture - 04 Downloading and installing Python

Week - 01 Lecture - 04 Downloading and installing Python Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 04 Downloading and

More information

MODEL-BASED DEVELOPMENT -TUTORIAL

MODEL-BASED DEVELOPMENT -TUTORIAL MODEL-BASED DEVELOPMENT -TUTORIAL 1 Objectives To get familiar with the fundamentals of Rational Rhapsody. You start with the simplest example possible. You end with more complex functionality, and a more

More information

Textures and UV Mapping in Blender

Textures and UV Mapping in Blender Textures and UV Mapping in Blender Categories : Uncategorised Date : 21st November 2017 1 / 25 (See below for an introduction to UV maps and unwrapping) Jim s Notes regarding Blender objects, the UV Editor

More information

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics COMP-202 Unit 1: Introduction Announcements Did you miss the first lecture? Come talk to me after class. If you want

More information

In this tutorial we are going to take a look at the CentovaCast 3 control panel running ShoutCast 2 and explain some of the basic features.

In this tutorial we are going to take a look at the CentovaCast 3 control panel running ShoutCast 2 and explain some of the basic features. CentovaCast 3 - Shoutcast2 Overview In this tutorial we are going to take a look at the CentovaCast 3 control panel running ShoutCast 2 and explain some of the basic features. Details Once you purchase

More information

In this simple example, it is quite clear that there are exactly two strings that match the above grammar, namely: abc and abcc

In this simple example, it is quite clear that there are exactly two strings that match the above grammar, namely: abc and abcc JavaCC: LOOKAHEAD MiniTutorial 1. WHAT IS LOOKAHEAD The job of a parser is to read an input stream and determine whether or not the input stream conforms to the grammar. This determination in its most

More information

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi.

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi. Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 18 Tries Today we are going to be talking about another data

More information

XNA Tutorials Utah State University Association for Computing Machinery XNA Special Interest Group RB Whitaker 21 December 2007

XNA Tutorials Utah State University Association for Computing Machinery XNA Special Interest Group RB Whitaker 21 December 2007 XNA Tutorials Utah State University Association for Computing Machinery XNA Special Interest Group RB Whitaker 21 December 2007 Console Windows Supplementary Tutorial 8 Overview The majority of beginning

More information

Glass Gambit: Chess set and shader presets for DAZ Studio

Glass Gambit: Chess set and shader presets for DAZ Studio Glass Gambit: Chess set and shader presets for DAZ Studio This product includes a beautiful glass chess set, 70 faceted glass shader presets and a 360 degree prop with 5 material files. Some people find

More information

XP: Backup Your Important Files for Safety

XP: Backup Your Important Files for Safety XP: Backup Your Important Files for Safety X 380 / 1 Protect Your Personal Files Against Accidental Loss with XP s Backup Wizard Your computer contains a great many important files, but when it comes to

More information

A CHILD S GUIDE TO DIRECT DATALOGGING WITH EXCEL. (All brickbats and bouquets gladly received - on the Arduino forum)

A CHILD S GUIDE TO DIRECT DATALOGGING WITH EXCEL. (All brickbats and bouquets gladly received - on the Arduino forum) A CHILD S GUIDE TO DIRECT DATALOGGING WITH EXCEL version 5 (All brickbats and bouquets gladly received - on the Arduino forum) This is an aide memoire for the PLX-DAQ macro for Excel. Parallax do not address

More information

JUnit Test Patterns in Rational XDE

JUnit Test Patterns in Rational XDE Copyright Rational Software 2002 http://www.therationaledge.com/content/oct_02/t_junittestpatternsxde_fh.jsp JUnit Test Patterns in Rational XDE by Frank Hagenson Independent Consultant Northern Ireland

More information

The requirements according to Autodesk are to be using Xcode with the 10.8 SDK(comes with it). Xcode 6 does not have this SDK.

The requirements according to Autodesk are to be using Xcode with the 10.8 SDK(comes with it). Xcode 6 does not have this SDK. The requirements according to Autodesk are to be using Xcode 5.0.2 with the 10.8 SDK(comes with it). Xcode 6 does not have this SDK. Unfortunately, when Apple updates Xcode it breaks everything, every

More information

Earthwork 3D for Dummies Doing a digitized dirt takeoff calculation the swift and easy way

Earthwork 3D for Dummies Doing a digitized dirt takeoff calculation the swift and easy way Introduction Earthwork 3D for Dummies Doing a digitized dirt takeoff calculation the swift and easy way Getting to know you Earthwork has inherited its layout from its ancestors, Sitework 98 and Edge.

More information

ULTIMATE IRAY SKIN MANAGER

ULTIMATE IRAY SKIN MANAGER ULTIMATE IRAY SKIN MANAGER V3Digitimes, January 2018 1 Ultimage Iray Skin Manager is a product made to help you to configure, modify, adapt Iray Skin Settings in the most efficient, easy, and comfortable

More information

Materials in Kerkythea ~ a beginners guide

Materials in Kerkythea ~ a beginners guide Materials in Kerkythea ~ a beginners guide I started using Kerkythea as a way of rendering SketchUP models. I quickly found that I needed to be able to create and work with materials. I read Patrick Nieborg

More information

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n) Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Module 10A Lecture - 20 What is a function?

More information

Chapter 4- Blender Render Engines

Chapter 4- Blender Render Engines Chapter 4- Render Engines What is a Render Engine? As you make your 3D models in, your goal will probably be to generate (render) an image or a movie as a final result. The software that determines how

More information

Full Website Audit. Conducted by Mathew McCorry. Digimush.co.uk

Full Website Audit. Conducted by Mathew McCorry. Digimush.co.uk Full Website Audit Conducted by Mathew McCorry Digimush.co.uk 1 Table of Contents Full Website Audit 1 Conducted by Mathew McCorry... 1 1. Overview... 3 2. Technical Issues... 4 2.1 URL Structure... 4

More information

Stored procedures - what is it?

Stored procedures - what is it? For a long time to suffer with this issue. Literature on the Internet a lot. I had to ask around at different forums, deeper digging in the manual and explain to himself some weird moments. So, short of

More information

Lab 7 Unit testing and debugging

Lab 7 Unit testing and debugging CMSC160 Intro to Algorithmic Design Blaheta Lab 7 Unit testing and debugging 13 March 2018 Below are the instructions for the drill. Pull out your hand traces, and in a few minutes we ll go over what you

More information

Lesson 2 page 1. ipad # 17 Font Size for Notepad (and other apps) Task: Program your default text to be smaller or larger for Notepad

Lesson 2 page 1. ipad # 17 Font Size for Notepad (and other apps) Task: Program your default text to be smaller or larger for Notepad Lesson 2 page 1 1/20/14 Hi everyone and hope you feel positive about your first week in the course. Our WIKI is taking shape and I thank you for contributing. I have had a number of good conversations

More information

Computer Graphics Tick 2

Computer Graphics Tick 2 Computer Graphics Tick 2 Advanced Ray Tracing Effects Figure 1: The image you will create in this exercise. 1 Introduction In this exercise you will extend the ray tracer to handle a new shape and additional

More information

ICOM 4015 Advanced Programming Laboratory. Chapter 1 Introduction to Eclipse, Java and JUnit

ICOM 4015 Advanced Programming Laboratory. Chapter 1 Introduction to Eclipse, Java and JUnit ICOM 4015 Advanced Programming Laboratory Chapter 1 Introduction to Eclipse, Java and JUnit University of Puerto Rico Electrical and Computer Engineering Department by Juan E. Surís 1 Introduction This

More information

6.001 Notes: Section 17.5

6.001 Notes: Section 17.5 6.001 Notes: Section 17.5 Slide 17.5.1 Now, let's look at one example in which changing the evaluation model allows us to explore a very different kind of computational problem. Our goal is to show how

More information

(Refer Slide Time: 06:01)

(Refer Slide Time: 06:01) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 28 Applications of DFS Today we are going to be talking about

More information

Chapter 2 The SAS Environment

Chapter 2 The SAS Environment Chapter 2 The SAS Environment Abstract In this chapter, we begin to become familiar with the basic SAS working environment. We introduce the basic 3-screen layout, how to navigate the SAS Explorer window,

More information

SPRITES Moving Two At the Same Using Game State

SPRITES Moving Two At the Same Using Game State If you recall our collision detection lesson, you ll likely remember that you couldn t move both sprites at the same time unless you hit a movement key for each at exactly the same time. Why was that?

More information

Word: Print Address Labels Using Mail Merge

Word: Print Address Labels Using Mail Merge Word: Print Address Labels Using Mail Merge No Typing! The Quick and Easy Way to Print Sheets of Address Labels Here at PC Knowledge for Seniors we re often asked how to print sticky address labels in

More information

Using Déjà Vu Interactive a tutorial

Using Déjà Vu Interactive a tutorial Déjà Vu Interactive Tutorial 1 Using Déjà Vu Interactive a tutorial Now that you have installed Déjà Vu on your computer, you are ready to begin with our tutorial. The series of step by step procedures

More information

Using X-Particles with Team Render

Using X-Particles with Team Render Using X-Particles with Team Render Some users have experienced difficulty in using X-Particles with Team Render, so we have prepared this guide to using them together. Caching Using Team Render to Picture

More information

Program Organization and Comments

Program Organization and Comments C / C++ PROGRAMMING Program Organization and Comments Copyright 2013 Dan McElroy Programming Organization The layout of a program should be fairly straight forward and simple. Although it may just look

More information

Tips from the experts: How to waste a lot of time on this assignment

Tips from the experts: How to waste a lot of time on this assignment Com S 227 Spring 2018 Assignment 1 100 points Due Date: Friday, September 14, 11:59 pm (midnight) Late deadline (25% penalty): Monday, September 17, 11:59 pm General information This assignment is to be

More information

MR Shaders Dielectric Materials Rendering Glass and Simple Caustics

MR Shaders Dielectric Materials Rendering Glass and Simple Caustics Dielectric Material This shader is a physically based material shader that can be used to simulate dielectric media such as glass, water, and other liquids. The shader uses Fresnel's formulas for dielectric

More information

And FlexCel is much more than just an API to read or write xls files. On a high level view, FlexCel contains:

And FlexCel is much more than just an API to read or write xls files. On a high level view, FlexCel contains: INTRODUCTION If you develop applications for the.net Framework, be it Winforms, ASP.NET or WPF, you are likely to need to interface with Excel sooner or later. You might need to create Excel files that

More information

the NXT-G programming environment

the NXT-G programming environment 2 the NXT-G programming environment This chapter takes a close look at the NXT-G programming environment and presents a few simple programs. The NXT-G programming environment is fairly complex, with lots

More information

UV Mapping to avoid texture flaws and enable proper shading

UV Mapping to avoid texture flaws and enable proper shading UV Mapping to avoid texture flaws and enable proper shading Foreword: Throughout this tutorial I am going to be using Maya s built in UV Mapping utility, which I am going to base my projections on individual

More information

UDK Basics Textures and Material Setup

UDK Basics Textures and Material Setup UDK Basics Textures and Material Setup By Sarah Taylor http://sarahtaylor3d.weebly.com In UDK materials are comprised of nodes, some of which you may be familiar with, such as Diffuse, normal, specular

More information

Chrome if I want to. What that should do, is have my specifications run against four different instances of Chrome, in parallel.

Chrome if I want to. What that should do, is have my specifications run against four different instances of Chrome, in parallel. Hi. I'm Prateek Baheti. I'm a developer at ThoughtWorks. I'm currently the tech lead on Mingle, which is a project management tool that ThoughtWorks builds. I work in Balor, which is where India's best

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #29 Arrays in C

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #29 Arrays in C Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #29 Arrays in C (Refer Slide Time: 00:08) This session will learn about arrays in C. Now, what is the word array

More information

CSCU9B2 Practical 1: Introduction to HTML 5

CSCU9B2 Practical 1: Introduction to HTML 5 CSCU9B2 Practical 1: Introduction to HTML 5 Aim: To learn the basics of creating web pages with HTML5. Please register your practical attendance: Go to the GROUPS\CSCU9B2 folder in your Computer folder

More information

There are many kinds of surface shaders, from those that affect basic surface color, to ones that apply bitmap textures and displacement.

There are many kinds of surface shaders, from those that affect basic surface color, to ones that apply bitmap textures and displacement. mental ray Overview Mental ray is a powerful renderer which is based on a scene description language. You can use it as a standalone renderer, or even better, integrated with 3D applications. In 3D applications,

More information

Project #1: Tracing, System Calls, and Processes

Project #1: Tracing, System Calls, and Processes Project #1: Tracing, System Calls, and Processes Objectives In this project, you will learn about system calls, process control and several different techniques for tracing and instrumenting process behaviors.

More information

Lesson 4 - Basic Text Formatting

Lesson 4 - Basic Text Formatting Lesson 4 - Basic Text Formatting Objectives In this lesson we will: Introduce Wiki Syntax Learn how to Bold and Italicise text, and add Headings Learn how to add bullets and lists Now that you have made

More information

Azon Master Class. By Ryan Stevenson Guidebook #4 WordPress Installation & Setup

Azon Master Class. By Ryan Stevenson   Guidebook #4 WordPress Installation & Setup Azon Master Class By Ryan Stevenson https://ryanstevensonplugins.com/ Guidebook #4 WordPress Installation & Setup Table of Contents 1. Add Your Domain To Your Website Hosting Account 2. Domain Name Server

More information

Lesson 03: We will add water and will set the placing conditions for the material. WorldBuilder 3.5. for. About Digital Element Tutorials:

Lesson 03: We will add water and will set the placing conditions for the material. WorldBuilder 3.5. for. About Digital Element Tutorials: Lesson 03: We will add water and will set the placing conditions for the material for WorldBuilder 3.5 About Digital Element Tutorials: This tutorial is available both in.pdf format and in Qarbon format,

More information

Blackfin Online Learning & Development

Blackfin Online Learning & Development Presentation Title: Multimedia Starter Kit Presenter Name: George Stephan Chapter 1: Introduction Sub-chapter 1a: Overview Chapter 2: Blackfin Starter Kits Sub-chapter 2a: What is a Starter Kit? Sub-chapter

More information

4) Finish the spline here. To complete the spline, double click the last point or select the spline tool again.

4) Finish the spline here. To complete the spline, double click the last point or select the spline tool again. 1) Select the line tool 3) Move the cursor along the X direction (be careful to stay on the X axis alignment so that the line is perpendicular) and click for the second point of the line. Type 0.5 for

More information

COPYRIGHTED MATERIAL. Starting Strong with Visual C# 2005 Express Edition

COPYRIGHTED MATERIAL. Starting Strong with Visual C# 2005 Express Edition 1 Starting Strong with Visual C# 2005 Express Edition Okay, so the title of this chapter may be a little over the top. But to be honest, the Visual C# 2005 Express Edition, from now on referred to as C#

More information