Skip to content

Instantly share code, notes, and snippets.

Avatar

Tai Komatsu taikomatsu

View GitHub Profile
@taikomatsu
taikomatsu / bias_gain_short.vfl
Last active Apr 19, 2019
bias & gain for VEX short ver
View bias_gain_short.vfl
float bias(float b; float x) {
return pow(x, log(b)/log(0.5));
}
float gain(float g; float x) {
return (x<0.5) ? bias(1-g, 2*x)*.5 : 1-bias(1-g, 2-2*x)*.5;
}
// usage example
float x = v@P.x;
//v@P.y = bias(0.8, x);
@taikomatsu
taikomatsu / bias_gain.vfl
Last active Jan 22, 2019
bias & gain for VEX
View bias_gain.vfl
float bias(float b; float x) {
return pow(x, log(b)/log(0.5));
}
float gain(float g; float x) {
if (x<0.5)
return bias(1-g, 2*x)/2;
else
return 1-bias(1-g, 2-2*x)/2;
}
@taikomatsu
taikomatsu / easy_angle_difference_detection.py
Created Apr 13, 2018
超手抜き版エッジから正しいポジションを復元させるやーつ。任意の軸とエッジ(2点)の角度の差をdegreeでなんとなく取得する。
View easy_angle_difference_detection.py
from pymel.core import *
import math
pt0, pt1 = selected(fl=True)
p0 = dt.Vector(xform(pt0, q=True, ws=True, t=True, a=True))
p1 = dt.Vector(xform(pt1, q=True, ws=True, t=True, a=True))
diff = p0-p1
axis = dt.Vector(0, 0, 1)
print(math.degrees(math.acos(diff.normal().dot(axis))))
@taikomatsu
taikomatsu / check_dynArray_value.py
Last active Dec 20, 2017
dynamic attributeの値をチェックする。主にSOuPやMash使ってる時用かも。
View check_dynArray_value.py
# とりあえず大急ぎで書いてる
# あれこれ書き方忘れてたので参考ページもメモ
# https://area.autodesk.jp/column/tutorial/maya_atoz/attribute_plug/
# http://ianwaters.co.uk/wp/mash/accessing-mash-point-data-with-the-maya-api/
from maya import OpenMaya
import pymel.core as pm
def mdg_from_name(name):
@taikomatsu
taikomatsu / convert_focal_aov.py
Created Oct 9, 2017
Convert AOV from Focal Length / Focal Length from AOV (Maya)
View convert_focal_aov.py
# Mayaで諸事情によりカメラスケール使えなかった時用に調べて書いた
# degreeとmmで計算してます
import math
def focal_to_aov(focal, aperture):
'''
focal: focal length
aperture: horizontal aperture (mm)
'''
@taikomatsu
taikomatsu / remove_filepath_expression.py
Created Apr 25, 2017
Remove expressions from file knob on all Reads in Nuke.
View remove_filepath_expression.py
import nuke
import os.path
reads = nuke.allNodes('Read')
err_cnt = 0
for i, r in enumerate(reads):
raw = r.knob('file').getValue()
evaluated = r.knob('file').getEvaluatedValue()
full_path = '{}/{}'.format(os.path.dirname(evaluated), os.path.basename(raw))
try:
@taikomatsu
taikomatsu / pyside2_test.py
Created Apr 10, 2017
H16 PySide2 easy example
View pyside2_test.py
import hou
from PySide2 import QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.construct_ui()
def construct_ui(self):
self.setWindowTitle('PySide2 Test')
View move_to_rop.py
# filecache SOPにボタンを追加して、そのボタンのCallback Scriptに登録して使う
# filecacheと同名のropにジャンプする
# ジャンプした際、対象のropは選択状態になっている
node = hou.pwd()
out_node = '/out/{}'.format(node.name())
hou.hscript('panepath -f {}'.format(out_node))
hou.node(out_node).setSelected(1)
@taikomatsu
taikomatsu / bakecam.py
Last active Jan 10, 2017
Create clone cameras for data exchanging with other DCC apps.
View bakecam.py
# Houdiniにカメラを持っていく用に、値をbakeしてシンプルなデータにするための処理を自動化。
# 一応複数対応してる感じで書いてるけど、あんまり想定してないしテストもしていないw
# filmoffsetに関して、アニメーションの再接続をしているもののこれもそのままは持っていけないので一応やってるだけ。
# bakeするレンジはtime sliderに準拠する。
from pymel.core import *
cams = []
for o in selected():
new_cam = duplicate(o, rr=True)[0]
View extend_curve.vfl
// curveの先端を接線(というか隣のポイントとの差分)を使って伸ばす
vector p0 = point(0, "P", 0);
vector p1 = point(0, "P", 1);
vector np0 = point(0, "P", i@numpt-1);
vector np1 = point(0, "P", i@numpt-2);
vector tan_in = normalize(p0-p1);
vector tan_out = normalize(np0 - np1);
float ext = ch("ext");
addpoint(0, p0+tan_in*ext);
You can’t perform that action at this time.