View get_keyframe_frame.py
# 任意のノードのパラメータのキーフレームの打たれたフレームを取得する | |
hou.node('/obj/work/mynode').parm("parm").keyframes()[index].frame() | |
# 例: switchノードのinput1の任意のパラメータの一番最初のフレーム以上の場合、switchのinputを1にするExpression | |
hou.frame()>=pwd().inputs()[1].parm('parm').keyframes()[index].frame() |
View auto_render_name.tcl
# NukeでWrite.fileによく使うエクスプレッション | |
# 作業中のスクリプトが C:/work/nuke/nuke_test_v01.nk だった場合、 | |
# 以下のExpressionをWrite.fileに記述しておくことで、 | |
# C:/work/nuke/render/nuke_test_v01/nuke_test_v01.####.tif に出力される。 | |
# [lindex [split [lindex [split [knob [topnode].file] .] 0] /] end] の部分で | |
# 現在のnukeスクリプトの名前を取得しているのでファイル名やパスが変わっても自動で出力可能。 | |
# 毎回記述を忘れるのでメモまで。 | |
[file dirname [value root.name]]/render/[lindex [split [lindex [split [value root.name] .] 0] /] end]/[lindex [split [lindex [split [value root.name] .] 0] /] end].%04d.tif |
View convert_acv_to_nuke.py
# import acv | |
import struct | |
filepath = 'C:/users/hoge/curve.acv' | |
luts = [] | |
with open(filepath, 'rb') as f: | |
header = f.read(4) | |
for i in range(len('mrgba')): | |
ncvs = struct.unpack('>BB', f.read(2))[1] | |
ipairs = [struct.unpack('>BBBB', f.read(4))[1::2] for k in range(ncvs)] | |
pairs = [(ix/255., iy/255.) for iy, ix in ipairs] |
View read_acv.py
# AEの.acvファイルをNukeに持っていく用にリサーチ | |
# 冒頭4バイトはヘッダ?処理に必要そうなものではなかったので一旦無視 | |
# その後はマスター, R, G, B, Aと全5チャンネル分の情報が、 | |
# 制御点の個数, (制御点の位置(x), 制御点の値(y)) x 個数分 という感じで全チャンネル分記載されていた | |
### 注意 ### | |
# Jupyterで書いてたためPython3.xなのでそのままだとDCCでは使えないかもしれない、、 | |
filepath = 'C:/users/hoge/curve.acv' | |
with open(filepath, 'rb') as f: |
View assign_mat.py
# reference: | |
# https://blender.stackexchange.com/questions/23433/how-to-assign-a-new-material-to-an-object-in-the-scene-from-python | |
import bpy | |
mat = bpy.data.materials.get('my_material') | |
for o in bpy.context.selected_objects: | |
if o.data.materials: | |
ob.data.materials[0] = mat | |
else: | |
o.data.materials.append(mat) |
View carve_each_curves.vfl
// carveする値。ここにバラバラの値を入れればバラバラにcarveも可能。 | |
float carve = fit(f@Frame, 1, 24, 1, 0); | |
int pts[] = primpoints(0, i@primnum); | |
// carve後のcurveのポイントを保持する配列 | |
int newpts[] = {}; | |
foreach (int pt; pts) { | |
float u = point(0, "curveu", pt); | |
// carveの向きはここの条件やcarveの変化を変えればOK | |
if (u<carve) | |
removepoint(0, pt); |
View convert_hdri_to_png.py
import os | |
import os.path | |
import imageio | |
import numpy as np | |
from PIL import Image | |
# .hdrや.exrなど、読み込む際にfreeimageを使う必要があるフォーマット用にfreeimageをダウンロードしてくれるらしい | |
imageio.plugins.freeimage.download() | |
def list_hdri(dirname): |
View display_hdr_qt.py
from PySide2 import QtWidgets, QtGui | |
from PySide2 import QtCore | |
import sys | |
import imageio | |
import numpy as np | |
from PIL import Image, ImageQt | |
imgpath = 'myhdri.hdr' | |
imageio.plugins.freeimage.download() | |
img = imageio.imread(imgpath) |
View displayhdr.py
import numpy as np | |
import imageio | |
from PIL import Image | |
import matplotlib.pyplot as plt | |
# imageioで画像を読み込み | |
imgpath = 'myhdri.hdr' | |
imageio.plugins.freeimage.download() | |
img = imageio.imread(imgpath) |
View readhdr.py
import imageio | |
imgpath = 'myhdri.hdr' | |
# freeimageがインストールされていないシステムでも以下の一行を実行すればHDRが読める | |
imageio.plugins.freeimage.download() | |
img = imageio.imread(imgpath) | |
# 画像サイズも確認可能 | |
print(img.shape) |
NewerOlder