他のスクリプトからの操作
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
3件表示
(全3件)
すべてのコメント一覧へ
投稿ツリー
-
他のスクリプトからの操作
(leo, 2009/9/21 16:36)
-
Re: 他のスクリプトからの操作
(yamyam, 2009/9/22 9:13)
-
Re: 他のスクリプトからの操作
(leo, 2009/9/22 13:58)
他のスクリプトからの操作
msg# 1
leo
居住地: 東京
投稿数: 9
別のアプリケーションから書き出したpyファイルをBlenderのscriptingから呼び出して、
存在するカメラの位置と方向を変更したいのですが、うまくいきません。
Blender上で動かすファイル
read.py
from math import *
from Blender import Scene, Mesh, Window, Camera, Lamp
import os
import Blender
scn = Scene.New('myScene')
scn.makeCurrent()
msh = Mesh.Primitives.Cube(1.7)
obj = scn.objects.new(msh, 'myCube')
obj.loc = (0, 0, 1.5)
obj.rot = (0, 0, 40*pi/180)
lmpobj = Lamp.New('Spot')
lmpobj.setMode('Shadows')
lmpobj.setEnergy(0.7)
lmpobj.col = [1, 1, 1]
obj = scn.objects.new(lmpobj)
obj.loc = (0, 0, 10)
camobj = Camera.New()
camobj.scale = 35.0
obj = scn.objects.new(camobj, 'myCamera')
obj.loc = (0, -6.508, 5.344)
obj.rot = (55*pi/180, 0, 0)
scn.setCurrentCamera(obj)
os.system('.blender\scripts\d.py')
呼び出すファイル
d.py
from Blender import Camera
obj = Camera.Get('myCamera')
obj.loc = (-0.010339,0.029096,0.511219)
obj.rot = (-23.397274,6.665778,-7.234379)
#数値をこのファイルで変えたい
実行すると
from Blender import Camera
ImportError: No module named Blender
というエラーが出てカメラの値が変更されるどころか
インポートができません。
Blenderモジュールはインポートしなくても使えるのではなかったでしょうか。
呼び出す側のBlender上で最初に動かす方は問題なく働くのですが、
呼び出したファイルでBlender関連のAPIを使うと同じようなエラーが出ます。
ファイルの場所はいずれも.blender\scripts
でBlenderは2.49a、Pythonは2.62、OSはXP SP3です。
存在するカメラの位置と方向を変更したいのですが、うまくいきません。
Blender上で動かすファイル
read.py
from math import *
from Blender import Scene, Mesh, Window, Camera, Lamp
import os
import Blender
scn = Scene.New('myScene')
scn.makeCurrent()
msh = Mesh.Primitives.Cube(1.7)
obj = scn.objects.new(msh, 'myCube')
obj.loc = (0, 0, 1.5)
obj.rot = (0, 0, 40*pi/180)
lmpobj = Lamp.New('Spot')
lmpobj.setMode('Shadows')
lmpobj.setEnergy(0.7)
lmpobj.col = [1, 1, 1]
obj = scn.objects.new(lmpobj)
obj.loc = (0, 0, 10)
camobj = Camera.New()
camobj.scale = 35.0
obj = scn.objects.new(camobj, 'myCamera')
obj.loc = (0, -6.508, 5.344)
obj.rot = (55*pi/180, 0, 0)
scn.setCurrentCamera(obj)
os.system('.blender\scripts\d.py')
呼び出すファイル
d.py
from Blender import Camera
obj = Camera.Get('myCamera')
obj.loc = (-0.010339,0.029096,0.511219)
obj.rot = (-23.397274,6.665778,-7.234379)
#数値をこのファイルで変えたい
実行すると
from Blender import Camera
ImportError: No module named Blender
というエラーが出てカメラの値が変更されるどころか
インポートができません。
Blenderモジュールはインポートしなくても使えるのではなかったでしょうか。
呼び出す側のBlender上で最初に動かす方は問題なく働くのですが、
呼び出したファイルでBlender関連のAPIを使うと同じようなエラーが出ます。
ファイルの場所はいずれも.blender\scripts
でBlenderは2.49a、Pythonは2.62、OSはXP SP3です。
投票数:22
平均点:2.27
Re: 他のスクリプトからの操作
msg# 1.1
yamyam
居住地: そうや、うちはおおさかやー
投稿数: 4405
すいません、もしかして外してるかもしれませんが、
これを実行した時点でOS(というかpyファイルに関連付けられているPython.exe)に制御が移っているので、参照するパスが変わり、Blender のライブラリは読めなくなっているのだと思います。
os.system('.blender\scripts\d.py')
これを実行した時点でOS(というかpyファイルに関連付けられているPython.exe)に制御が移っているので、参照するパスが変わり、Blender のライブラリは読めなくなっているのだと思います。
投票数:4
平均点:5.00
Re: 他のスクリプトからの操作
msg# 1.1.1
leo
居住地: 東京
投稿数: 9
指摘してくださった通り、os.systemではなく、
Blender.Run('.\.blender\scripts\d.py')
というブレンダーのメソッドで呼び出したところ解決しました。
また、質問した内容のエラーとは関係ないのですが、
d.pyの内容は
from Blender import Camera
import Blender
obj = Blender.Object.Get("myCamera")
obj.loc = (-0.009334,-0.011914,0.545170)
obj.rot = (-22.456832,7.071338,-0.029708)
Blender.Redraw()
でうまく動きました。
ありがとうございました。
Blender.Run('.\.blender\scripts\d.py')
というブレンダーのメソッドで呼び出したところ解決しました。
また、質問した内容のエラーとは関係ないのですが、
d.pyの内容は
from Blender import Camera
import Blender
obj = Blender.Object.Get("myCamera")
obj.loc = (-0.009334,-0.011914,0.545170)
obj.rot = (-22.456832,7.071338,-0.029708)
Blender.Redraw()
でうまく動きました。
ありがとうございました。
投票数:3
平均点:3.33
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