IPOカーブをファイルから取り込む方法について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2006/8/16 19:58
KCCK  新米 居住地: 東京の最南端(島以外で)  投稿数: 2
はじめましてKCCKと申します。

計算機によるシミュレーション実験の結果をファイルに出力し、
その結果をBlenderで表示することが目的です。
ファイルには各時間ごとのx、y座標の値が記録してあり
その値を読み込んでIPOカーブを作る方法はないかと考えています。
現在の結果は
時間 名前 X座標 Y座標
t=1  A   0    0
t=1  B   100   100
t=2  A   2    5
t=2  B   99   95
t=2  C   100   100



のように出力して、
1つの行の中で項目ごとの区切りはTabを用いています。
結果の出力方法は変えることができるので既存のスクリプト等があれば
それに対応できるように変更できます。

いい方法があればご教授ください。
よろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2006/8/26 0:19
まんだ  長老 居住地: むかしは本州の西端  投稿数: 570
KCCK さん、はじめまして。

引用:
結果の出力方法は変えることができるので既存のスクリプト等があればそれに対応できるように変更できます。
そこまで出来る知識とウデをお持ちなら、是非Pythonを使って自分でプログラムを組むことにチャレンジしてみませんか?

そのほうが早い(というか、色々と自分用にカスタマイズできたりして面白いかも)と思うんですが。実際、そういった限定的な用途(すいません…)だと…ね。

もし作られるならBlenderArtistsのフォーラム内、
Creating a new IPO curveを参考にして作られるのがいいかと。
あとはこの欄の左側にあるリンクから。




投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2006/8/27 12:28
KCCK  新米 居住地: 東京の最南端(島以外で)  投稿数: 2
まんださんご返信ありがとうございます。

引用:
是非Pythonを使って自分でプログラムを組むことにチャレンジしてみませんか?

Pythonはまだ使ったことが無いので今回はBlenderでモデリングしたものを
Pov-rayにエクスポートし結果をPov-ray用に出力してアニメーションを
つくろうと思います。
ただ、キーとなるコマのデータのみを用いてBlenderのIPOカーブをつくる
Pythonのスクリプトには今後チャレンジしてみようと思います。
汎用的なものができましたらここにアップしたいです。
投票数:0 平均点:0.00

通常 謄箸IPO

msg# 1.2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2006/9/8 22:40
num  新米   投稿数: 3
こんにちはnumと申します。
今更ですがテキストファイルからipoに取り込む方法としてこんな感じではいかがでしょう?(以下は一つのオブジェクトのみの分なのでオブジェクトが複数ある場合は、この処理を繰り返す必要があります)

例えば
1 objectA 0 2
2 objectA 10 5
3 objectA 15 7
4 objectA 20 9
...

のような感じで書かれdata.txtというファイルがあったとして

import Blender
from string import atof,atoi,split 

file ='d:\\data.txt'

objA =Blender.Object.Get("Cube")
ipoA = Blender.Ipo.New("Object", "A_IPO")

pxA = ipoA.addCurve('LocX')
pyA = ipoA.addCurve('LocY')

f=open(file,'r')
fr=f.readline()
while fr!="":
  frdata=split(fr," ")
  
  t=atoi(frdata[0])
  xA=atof(frdata[2])
  yA=atof(frdata[3])
  pxA.addBezier((t, xA))
  pyA.addBezier((t, yA))
  
  fr=f.readline()

pxA.update()
pyA.update()

objA.setIpo(ipoA)

Blender.Redraw()
f.close()

(さっき投稿してみたところ、上のスクリプトからインデントが消えてしまいますね。while fr!="":の次の行からfr=f.readline()までスペースかTABでインデントしてあげてください。使いなれていなくてすいません)
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2006/9/9 0:27
まんだ  長老 居住地: むかしは本州の西端  投稿数: 570
num さん、はじめまして。
フォローありがとうございます。

二点だけ…すいません…。
一応ファイルは使ったら閉じて(f.close())おいてください。一応「お作法」みたいなものですけど。

多分、ループ部は"for hoge in f"と記述してもOKかと

[追記]対応されましたので一部修正(取り消し線部分)。-まんだ-
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2006/9/9 3:48
num  新米   投稿数: 3
>一応ファイルは使ったら閉じて(f.close())おいてください

あらら、お恥ずかしい…
まんださん、ありがとうございました。これからもどうぞよろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2006/9/9 6:17
yamyam  管理人 居住地: そうや、うちはおおさかやー  投稿数: 4404
はじめまして、numさん。
ご投稿ありがとうございます。

僭越ながら、コード入力の修正と、fclose()の追加(for in〜はスタイルの問題なのでそのままにしました)をさせていただきました。

また、この機会に判りにくかったアイコンを変更させていただきました。
これからも当サイトをよろしくお願いします。
投票数:0 平均点:0.00

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

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

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

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


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