トンネル部品を連続表示させるPythonスクリプト(自信無し)
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
3件表示
(全3件)
すべてのコメント一覧へ
投稿ツリー
-
トンネル部品を連続表示させるPythonスクリプト(自信無し)
(Heayan, 2006/11/27 21:18)
-
Re: トンネル部品を連続表示させるPythonスクリプト(自信無し)
(yamyam, 2006/11/28 16:06)
-
Re: トンネル部品を連続表示させるPythonスクリプト(自信無し)
(Heayan, 2006/11/28 21:50)
Heayan
居住地: Katsushika Tokyo
投稿数: 32
ども、いつもROMしておりますHEAYANと申します。
土木工事の説明ビデオを作る仕事上、シールド機でトンネルを作るシーンを良く作ります。
しかし、調子に乗って作りこんでいると、リング状の部品の数が猛烈に増えて難儀します。
そこでシールド機の動きをFollowPathアニメで表現し、IpoウィンドのSpeedデータを読み出してリングを次々に表示させるスクリプトを作ることを画策しました。
ところが、発想は良かったものの慢性的な勉強不足が祟って『The Blender Python API Reference 日本語版』を見てもチンプンカンプン・・・
結局、三日近く掛けてSpeedのデータを読み出す事はできたのですが、Blenderの2.42でしか動かないスクリプトになってしまいました。
はたしてSpeedデータの読み出し方として正しいコーディングなのでしょうか?
先輩諸兄の皆様、なにとぞご教示ください。
↓ 簡略化したサンプルのセット ↓
http://eggphoto.agz.jp/heayan/diary/2006/pc/sample01.lzh
↓ スクリプトを使って作ったサンプル動画 ↓
Heayan_1164625540000_tunnel01.wmv
土木工事の説明ビデオを作る仕事上、シールド機でトンネルを作るシーンを良く作ります。
しかし、調子に乗って作りこんでいると、リング状の部品の数が猛烈に増えて難儀します。
そこでシールド機の動きをFollowPathアニメで表現し、IpoウィンドのSpeedデータを読み出してリングを次々に表示させるスクリプトを作ることを画策しました。
ところが、発想は良かったものの慢性的な勉強不足が祟って『The Blender Python API Reference 日本語版』を見てもチンプンカンプン・・・
結局、三日近く掛けてSpeedのデータを読み出す事はできたのですが、Blenderの2.42でしか動かないスクリプトになってしまいました。
はたしてSpeedデータの読み出し方として正しいコーディングなのでしょうか?
先輩諸兄の皆様、なにとぞご教示ください。
#################################
# #
# 軌道上を動くマシンにあわせて #
# トンネルが出来てゆくスクリプト#
# blender2.42a / Python2.4 #
# (2006/11/27) #
# #
#################################
import Blender
from Blender import Ipo
CF=Blender.Get("curframe") # 現在のフレームを取得
SF=10 # デバッグ用の表示コマ
SP = 0.006 # 最初の表示ポイント
Pich = 0.002025 # 表示用のリングピッチ
MAX = (1.0,1.0,1.0) # MAXの定義 縮尺=1.0
MIN = (0.0,0.0,0.0) # MINの定義 縮尺=0.0
RC01 = Blender.Ipo.Get('Speed01') # Ipo”Speed01”を取得
RCL = RC01[Ipo.CU_SPEED].__getitem__(CF) # 現フレームにおけるSpeedの値
##############################################
# Get Object Data (オブジェクトデータの取得)#
##############################################
SSeg001 = Blender.Object.Get("S-Seg001")
SSeg002 = Blender.Object.Get("S-Seg002")
SSeg003 = Blender.Object.Get("S-Seg003")
:
:
(中略)
:
:
SSeg459 = Blender.Object.Get("S-Seg459")
SSeg460 = Blender.Object.Get("S-Seg460")
############################
# Tunnel MAX/MIN (On/Off)#
############################
if CF < SF : SSeg001.size= MAX # 指定コマでデバック用の表示
elif SP+(Pich * 0) < RCL: # Ipoの数値が指定以上のとき
SSeg001.size= MAX # → 表示(大きさ=1)
else: # それ以外では
SSeg001.size= MIN # → 非表示(大きさ=0)
if CF < SF : SSeg002.size= MAX
elif SP+(Pich * 1) < RCL:
SSeg002.size= MAX
else:
SSeg002.size= MIN
if CF < SF : SSeg003.size= MAX
elif SP+(Pich * 2) < RCL:
SSeg003.size= MAX
else:
SSeg003.size= MIN
:
:
(中略)
:
:
if CF < SF : SSeg460.size= MAX
elif SP+(Pich * 459) < RCL:
SSeg460.size= MAX
else:
SSeg460.size= MIN
↓ 簡略化したサンプルのセット ↓
http://eggphoto.agz.jp/heayan/diary/2006/pc/sample01.lzh
↓ スクリプトを使って作ったサンプル動画 ↓
Heayan_1164625540000_tunnel01.wmv
投票数:4
平均点:5.00
Re: トンネル部品を連続表示させるPythonスクリプト(自信無し)
msg# 1.1
yamyam
居住地: そうや、うちはおおさかやー
投稿数: 4405
こんにちは。タブがなくなってたので、[code]タグでコード表示させていただきました。
API のことはちょっとわからないのですが(こちらの NEW の[]演算子の件と関係あり?)、とりあえずオブジェクトの取得と判定のところは、
の方が楽だと思いました。多分HEAYANさんもわかってらっしゃると思いますが。
API のことはちょっとわからないのですが(こちらの NEW の[]演算子の件と関係あり?)、とりあえずオブジェクトの取得と判定のところは、
# 初期化に追加
INDEXMAX = 460
SSeg = []
(中略)
# Get Object Data (オブジェクトデータの取得)#
# SSeg[0] = SSeg.001ということに注意
for i in range(0,INDEXMAX):
SSeg.append(Blender.Object.Get(("S-Seg%d03" % i+1)))
# Tunnel MAX/MIN (On/Off)#
for obj in SSeg:
if CF < SF : obj.size= MAX # 指定コマでデバック用の表示
elif SP+(Pich * 0) < RCL: # Ipoの数値が指定以上のとき
obj.size= MAX # → 表示(大きさ=1)
else: # それ以外では
obj.size= MIN # → 非表示(大きさ=0)
投票数:14
平均点:6.43
Re: トンネル部品を連続表示させるPythonスクリプト(自信無し)
msg# 1.1.1
Heayan
居住地: Katsushika Tokyo
投稿数: 32
yamyamさん、こんxxは。
RESありがとうございました。
早速チャレンジしてみます。
引用:
恥ずかしながら、よく分からないでやっております
『for』や『配列』などを使えばCoolなコーディングができるだろうと想像はしておりましたが、ビール漬けの脳みそでは太刀打ちできなかったモノですから・・・
RESありがとうございました。
早速チャレンジしてみます。
引用:
の方が楽だと思いました。多分HEAYANさんもわかってらっしゃると思いますが。
恥ずかしながら、よく分からないでやっております
『for』や『配列』などを使えばCoolなコーディングができるだろうと想像はしておりましたが、ビール漬けの脳みそでは太刀打ちできなかったモノですから・・・
投票数:16
平均点:9.38
3件表示
(全0件)
すべてのコメント一覧へ
ログイン
クイックリンク
2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki