-
Notifications
You must be signed in to change notification settings - Fork 111
Drafts
Here you will find Houdini general usage tips
- Reset rotate pivot to a viewport center:
Shift
+Z
-
Align nodes: press
A
, press LMB, move left(or up) -
Move node with upstream connections:
Shift
+LMB
+ move -
Move node with downstream connections:
Ctrl
+LMB
+ move -
Duplicate node:
Alt
+LMB
+ move . -
Duplicate node with upstream connections:
Alt
+Shift
+LMB
+ move -
Duplicate node with downstream connections:
Alt
+Ctrl
+LMB
+ move - Set display and render flag:
R
+LMB
click - Set render flag:
T
+LMB
click - Set bypass flag:
Q
+LMB
click - Set template flag:
W
+LMB
click -
Reoder inputs:
Shift
+R
- Add dot:
Alt
+LMB
click . -
Pin the wire:
Alt
+LMB
click -
Cut the wire:
Y
+LMB
drag -
Set quickmark 1:
Ctr
+1
-
Go to quickmark 1:
1
- Togle quickmarks: tilda
Attributes
Global expression variables
Standard variables
Local SOP variables
Here I keep Solaris notes.
Import into Solaris:
- Sublayer Node (just bring all USD content)
- Reference Node (more flexible)
Run cmd and enter: pip install ftrack-python-api
session = ftrack_api.Session(server_url='https://kiryha.ftrackapp.com',
api_key='36add3fe-c5f8-12x8-b1db-16010af0000k',
api_user='[email protected]')
The big picture... The ML pipeline includes three steps:
- Get or generate the data,
- Teach the model with this data,
- Utilize the model to make predictions.
Data is a core of ML, the more data you have, the better models you can create. You can get existing datasets on Kaggle, or you can create your own data sets and Houdini is an amazing tool for this task. Creating your data is exciting because you have full control over it, you can make changes anywhere and see how it affects the models.
Let's consider an example: you want to understand what your salary would be based on years of experience you have.
So you need a program that takes years of experience as input and provides prediction: corresponding salary.
Could we write a typical program to predict the salary?
if years_of_expirience > 10:
return 110
else:
return 50
To solve this problem with ML algorithms you need tons of records from people with information about experience and salary. You feed this data to a proper algorithm, train the model, and save the model on disk. Then you can "send" a number to a model and get another number back: input=10, output=118618, which means that with 10 years of experience, you can get $118K.
Check the code for this task, you don't need to reproduce it, just notice how relatively simple it is:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Read the data
df = pd.read_csv('salary_dataset.csv')
# Split dataset
x=df[['YearsExperience']]
y=df[['Salary']]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
# Train model
linear_model = LinearRegression()
linear_model.fit(x_train, y_train)
# Make prediction
experience = 10
predicted_salary = linear_model.predict([[experience]])
# Print result
print(f'I will have ${int(predicted_salary[0][0])} income after {experience} years!')
The snippet is manageable, however, the prediction is not promising:
I will have $118618 income after 10 years!
We used a Linear Regression model to predict a value (salary, dependent variable) based on another value (years of experience, independent variable).
Before we deal with scalar numbers, which give us a certain value (like length, X coordinate, etc). Vector could give us the direction and magnitude.
Subtraction gives the vector between two points
If we have 2 points, A and B, the representation of vector AB between this points would be the difference in coordinates of points B and A. v@AB = [B.x, B.y, B.z] - [A.x, A.y., A.z]. SRC
Multiply Vectors:
A) By scalar (float, int): multiply each component by scalar --> multiply the length
B) By vector:
B1) Scalar (DOT): Projection one vector onto another. result = scalar
B2) Vector (CROSS): Find 3rt vector, perpendicular to the source vectors
Here you will find some mathematical knowledge you may need in 3D graphics at some point. Same as with the programming basics explanation we will use simplification and analogies so the theory given here is not accurate but its easy for understanding basic concepts at the beginning.
Math is a pure abstraction. It was designed by humans to describe our world in a general way. To understand math concepts developed during hundreds of years we will get back to the real world and explain these concepts as particular examples.
Numbers and counting, the very basic mathematical stuff, is an abstraction: 1, 2, 3, 4, 5 has no representation in reality. But we can count all apples in the basket and explain number concept with a help of real objects. This is how the analogy works and we will extensively use this technique here.
Here we deal with shape, size and position of objects.
The coordinate systems are used to define a point position in space. In other words, it gives you the ability to get or set numeric point coordinates within a particular environment.
By the space (or environment) we mean our universe. But in human experience universe is a non-intuitive environment, we used to a much fewer scales, such as our home, a street or maybe a city. To get the intuitive analogy of environment we can limit the universe to the room where you are currently located. So how we can get numeric values of your position in the room?
To get or set values (measure them) we need a measuring tape. This tape is called an Axis of the coordinate system. We can use a different amount of axis to determinate a coordinate system. One axis will give us a representation of one-dimensional space (hard to imagine how you would feel yourself in the one-dimensional world, right?). Since our universe is 3-dimensional, we would need 3 axes to get an abstraction of the real world dimensions with math.
Besides axes, we need to define one more core item of the coordinate system — the beginning point, a place where all axis starts (where all coordinates are equal to a 0). The item is called an Origin and we may arbitrary define an origin in the real environment: let it be the bottom left corner of the room.
Trigonometry is all about length and angles in triangles. Since the angle is a rotation equivalent and full rotation gives us a circle, trigonometry heavily relies on the circle as well.
Here we come closer to a really useful stuff when we deal with 3D graphics.