トンネル部品を連続表示させるPythonスクリプト(自信無し)

投稿ツリー


このトピックの投稿一覧へ

通常 トンネル部品を連続表示させるPythonスクリプト(自信無し)

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2006/11/27 21:18
Heayan  半人前 居住地: Katsushika Tokyo  投稿数: 32
ども、いつもROMしておりますHEAYANと申します。

土木工事の説明ビデオを作る仕事上、シールド機でトンネルを作るシーンを良く作ります。
しかし、調子に乗って作りこんでいると、リング状の部品の数が猛烈に増えて難儀します。

そこでシールド機の動きを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

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki