TouchDesigner 프리셋 만들기
9838 단어 TouchDesigner
소개
실시간으로 생성되는 비주얼의 파라미터를 바꾸어 조정하거나 마음에 드는 파라미터를 저장하거나 한다고 생각합니다. 저장한 것을 프리셋으로 사용할 수 있으면 좋겠다고 생각하면서,
Palette
> Derivative
> Techniques
> presets
네.샘플 파일
github에 올랐으므로 필요에 따라 참조하십시오.
htps : // 기주 b. 코 m / Chima Nako / 토우 ch로 해 g r-a d ゔ ぇ t ぇ da r 2018
기본으로 사용하는 UI
UI의 베이스는
Palette
> Derivative
> UI
> gal
에 들어가 있는 것입니다. 지금까지 Palette
> Derivative
> UI
> TUIK
안에 있는 것을 사용해 UI를 만들고 있었습니다만, 내용을 조금 만지려고 하면 Tscript로 구현되고 있어 잘 모르기 때문에 Python 에서 구현되는 gal에 긁힘과 Discord에서 조언을 받았습니다. 사용해 보면 확실히 TUIK와 비교하여 자신이하고 싶은 용도로는 사용하기 쉬웠습니다.샘플 구조
이번에 만든 프리셋의 구조로는 0-9의 각 버튼을 클릭하면 저장된 프리셋의 값이 반영되며, UI에서 값을 변경한 후
Save
버튼을 클릭하면 현재 UI의 값이 저장됩니다. 라는 것입니다. 이러한 값을 사용해 Ramp Top
를 애니메이션 시키고 있습니다.VJ 툴과 같이 여러 종류의 비주얼을 준비하기 위해
UI_private
가정합니다. UI_all
쪽은 각 비주얼 공통의 내용을 보관 유지하고 있는 것으로, 현재 프리셋을 선택하는 라디오 버튼이 들어 있어, UI_private
의 내용을 함께 표시하고 있습니다.사전 설정 업데이트
table_all_values
에 모든 프리셋의 데이터가 들어 있고, preset_save
안의 chopexec_save
로부터 프리셋의 업데이트를 하고 있습니다.첫 번째 열이 각 프리셋의 이름이고 이름이 일치하면 index에 해당하는 값을 추가하거나 업데이트합니다.
새 프리셋이 추가되면 새 행(row)을 추가합니다.
null_current = op('null_current_values')
chopto_current = op('chopto_current_values')
null_index = op('null_index')
table_all = op('../table_all_values')
def offToOn(channel, sampleIndex, val, prev):
# get index to update
presetIndex = int(null_index[0] + 1)
# get a list channels
chans = null_current.chans()
# reset index
index = 0
for c in chans:
done = False
for i in range(table_all.numRows):
table_name = table_all[i, 0]
# check if a row for this value exists
if(c.name == table_name):
table_name.val = chopto_current[index, 0]
updateValue(c, index, presetIndex)
done = True
break
# if a row for this value doesn't exist
if(done == False):
table_all.appendRow([c.name])
updateValue(c, index, presetIndex)
done = True
index += 1
return
def updateValue(chan, index, presetIndex):
# update value
param = table_all[index, presetIndex]
param.val = chan
프리셋에 테이블을 사용하는 것은 익숙한 Matthew Ragan씨의 기사를 참고로 하고 있습니다.
TouchDesigner | FB HelpGroup | Presets | Matthew Ragan
UI 업데이트
프리셋 번호를 클릭했을 때,
chopexec_switch
로 한번 프리셋으로부터의 값을 반영시킨 후, op('text_reset_switch').run(delayFrames = 60)
로 60프레임 후에 UI로부터 값을 변경할 수 있는 상태로 되돌립니다.constant_switch = op('constant_switch')
def onValueChange(channel, sampleIndex, val, prev):
constant_switch.par.value0 = 1
op('text_reset_switch').run(delayFrames = 60)
return
constant = op('constant_switch')
constant.par.value0 = 0
UI_private
내의 각 CHOP Execute
우리는 각각 바로 오른쪽에 있는 UI의 Value를 직접 업데이트하고 있습니다. UI에서 변경했을 때도 프리셋에서 변경했을 때에도 UI의 값이 변경되기를 원하기 때문에 이렇게합니다.개선하고 싶은 점
table DAT
로 읽을 수 없습니까? table DAT
를 참조하고 CHOP Execute
에서 각 UI의 Value를 직접 업데이트하는 것을 어떻게 처리하고 싶습니다 (단순히 네트워크와 코드를 청소하고 싶습니다). 마지막으로
프리셋 이런 식으로 하고 있어요—라는 분이 계시면, 가르쳐 주시면 다행입니다.
고마워요.
Reference
이 문제에 관하여(TouchDesigner 프리셋 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chimanaco/items/17ac56c23f165d7883a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)