« 2008年2月 | メイン | 2008年4月 »

●デジタルトキワ荘が

2008年3月19日    

以前はけっこうお世話になってた
CG系の情報交換,求人求職サイトがリニューアルされてた
http://www.gamecreators.net/dgtkwsns/

最近は特別仕事を探すこともなかったし
掲示板がスパム書き込みで荒れてたから見に行くこともなくなっていたけれど
SNS風に変わっていますねOpenPNEベースかな?

とりあえず自分の登録情報をそのまま引き継いでくれているようだったので
少しだけ設定変更しておいて 放置

●shadeに用意されているクラスを調べる

2008年3月14日    

dirコマンドで
用意されているクラスをたどる


def roop_(base,x):
for i in x:
global list_
if (str(i) not in list_):
list_.append(str(i))
base2 = str(base)+'.'+ str(i)
x2=dir(eval(base2))
print base2
roop_(base2,x2)

list_=['xshade']
base_= 'xshade'
x = dir(eval(base_))
text = roop_(base_,x)

800行をこえた....
全部調べるのは大変そうだ

●Shade10キター&発売日パッチ(笑

2008年3月 8日    

今仕事に3DソフトのShadeを使っているわけなのですが
(日付かわって昨日)最新版が出ました
今回はかなりの変更があることもあって 速攻アップデートを申し込み
発売日に入手しましたよ


.....が
何だこれは 形状操作が乱れる
旧バージョンで1フレーム2秒弱だったレンダリング速度が
1フレーム15秒 (wwwwwwww
さすがに真っ青になってしまいましたよ


と思ったら 夕方にアップデートパッチ発表
発売当日にパッチなんて どこかしらのエロゲメーカーですか(wwwww
とりあえず表立った不具合は治った上に
レンダリング速度も十分に速く(1フレーム1秒未満)
CPUの動作を見る感じではMacProの8コアがフルに動作しているようで
まだ 多少の不具合はあるけれど 一転使えるソフトになってました
これでしばらくはこの環境で戦えるっ!

●Shade-頂点 稜線に接する面を取得

2008年3月 6日    

Shadeで頂点や稜線に接する面を取得するコマンドがなかったので


shape_ = xshade.scene().active_shape()

#辞書として 初期化
vertex_shered_face={} #頂点と接する面のリスト
edge_shered_face = {} #稜線と接する面のリスト

#頂点番号をキーとする辞書を作る
for i in range(shape_.total_number_of_control_points):vertex_shered_face[i] = []

#頂点に接する面を探す
for i in range(shape_.number_of_faces):
for j in shape_.face(i).vertex_indices: vertex_shered_face[j].append(i)

#稜線番号をキーとする辞書を作る
for i in range(shape_.number_of_edges):
#対象となる頂点に接している面のリストを取得
face_list_v0 = vertex_shered_face[shape_.edge(i).v0]
face_list_v1 = vertex_shered_face[shape_.edge(i).v1]
edge_shered_face[i] = []
for j in face_list_v0:
if j in face_list_v1:edge_shered_face[i].append(j)

print edge_shered_face

●Python覚え書き

2008年3月 4日    

クリップボードの中のPythonScriptを実行する


import commands
f=commands.getoutput('osascript -e \'return the clipboard\'')
print f #戻り値をメッセージウィンドウに出力

クリップボード内のスクリプトで commandsをインポートするとエラーになるので注意
Windowsではwin32clipboardモジュールをインポートすることでクリップボードを扱えるらしい

Shadeでムービーを作成して
ムービープレーヤーで開く


import os
import sys , commands,time

f_name = "/test.mov"

##動画を閉じる
CloseMovieAS_="""
tell application "QuickTime Player"
repeat with i from 1 to (count documents)
if name of document i is "test.mov" then close document i
end repeat
end tell
"""

##動画再生ApleScript##
PlayMovieAS_="""
on run argv
tell application "QuickTime Player"
activate
open argv as POSIX file
play document 1
set looping of document 1 to true
end tell
end run
"""

#同名の動画が開かれている場合閉じる
commands.getoutput('osascript -e \'' +CloseMovieAS_ + '\' ')
time.sleep(0.1)

#保存するパスを設定
if shade.active_document:
f_path = os.path.dirname(shade.active_document) + f_name
else: f_path = "/Users/yukimi/Temp_items" + f_name

#シーンを取得
scene_= xshade.scene()

#アニメーションの開始フレームを取得
if scene_.animation_settings.starting_frame == -1: start_frame = 0
else: start_frame = scene_.animation_settings.starting_frame

#アニメーションの終了フレームを取得
if scene_.animation_settings.ending_frame == -1:
end_frame = 300
scene_.animation_settings.ending_frame = end_frame
else:end_frame = scene_.animation_settings.ending_frame

xshade.scene().inhibit_update() #画面の更新を止める
start_time=time.time()
#アニメーションの作成を開始
scene_.rendering.start_animation( f_path )
for flame_ in xrange(start_frame,(end_frame +1)):
scene_.sequence_value = flame_ #シーケンス値(フレーム)
scene_.rendering.render()
scene_.rendering.append_animation()
scene_.rendering.finish_animation()
end_time=time.time()
print str(end_time - start_time) + "sec" #経過時間を表示
#シーケンス値を0位置に
scene_.sequence_value = 0
xshade.scene().allow_update() #画面の更新を再開

#再生スクリプトを実行
commands.getoutput('osascript -e \'' + PlayMovieAS_ + '\' \''+ f_path +'\'')