« C4D Python R12 テスト:子オブジェクト | トップページ | C4D Python R12 テスト:文字列を少々… »

C4D Python R12 テスト:シーンに変更を加える前にStopAllThreads()を呼び出す必要がある…

c4d.DocumentsモジュールのBaseDocumentクラスの冒頭に注意書きで書いてある「シーンに変更を加える前にStopAllThreads()を呼び出す必要がある」と言うのがありますね。

sharkattack51さんが書いたコードにあったんで、以前からStopAllThreads()は気になっていたんですけど…

でもね、「シーンに変更を加える…」って?
C4DPythonスクリプトは、シーンを変更する為に書くわけですよね。
変更しないスクリプトってどんなスクリプトだろうか?

全てのスクリプトがシーンを変更する為なんだから、スクリプトが実行される前にPy4Dが自動的にStopAllThreads()を呼び出してくれれば良いんじゃないだろうか?

あれだよね、XPressoのPythonノードでも呼び出す必要があるってことだよね…
XPressoのPythonノードだって、シーンを変更しているよね、しかもリアルタイムで…

でも、XPressoのPythonノードのプリセットは、

Python
import c4d
#Welcome to the world of Python


def main():
    global Output1
    Output1 = Input1 + Input2

こんな具合で、StopAllThreads()が書き込まれていない…

スクリプトマネージャ(Python)にもPythonジェネレータのプリセットにもStopAllThreads()が書き込まれていないのだ。

もしかして、C4Dが起動してから使われるスクリプトやXPressoやジェネレータは関係ないのだろうか?
起動時に組み込まれるPython製のPluginに限った事なのか?
詳しくは、わからないので全てに書き込むしかないか?

|

« C4D Python R12 テスト:子オブジェクト | トップページ | C4D Python R12 テスト:文字列を少々… »