bf-blender / Windows (2004/06/18) - Patched with Softbodies
jesterking氏によるSoftBodyのパッチを当てたbf-blenderバイナリの配布です。ベースはintrr(Alexander Ewering)氏のinstinctive blenderで、そこからsoftbody機能を数日前のCVSのものに追加されたとのこと。
もちろんインタフェイスは2.33a以降のものになっています。バイナリはtar.gzで配布されていますので、対応の解凍ソフトを使用して下さい。
機能については、もともとintrr氏のインハウス用に開発されたものなので、安定性や発散などの問題があることを了承しておいていてほしいとのこと。バグレポートはBUG Trackerではなく、上記スレッドで行ってください。また、他の環境でコンパイルされた人は氏に送れば氏のサーバにおいてくれるとのことです。
以下、instinctive blenderのドキュメントからの抜粋です。
Soft Effectの基本的情報
-----------------------------------
"Soft"Effectは実際には3つの別のEffectからなり、その範囲はメタボールのようなMesh変形からClothシミュレーションと呼ぶことができるものにまでに広がっています。
すべてのSoft Effectには"DeformOb"フィールドがあり、Soft Effectを設定したMeshを変形するObjectを指定します。DeformObは自身を変形しません。
変形されるMeshを今から"Soft mesh"と呼ぶことにします。
Soft Meshは変形できるようにSubdivideされていなければなりません。多くSubdivideすると、より適した解像度になります。Soft Meshの解像度はまた、"Dynamic" Effectの挙動の方法にも影響することに注意していて下さい。
共通のパラメータ
-----------------
Field / Collision / Dynamic:
ちなみに元の文書もこれだけ…。(;ー;)
あまりにも情報不足なので以下補足。
- 非常に重いです。恐らくMeshの面数に対し消費時間はO(n2)っぽいので、うかつにMonkeyで試すと悲しいことになります。これはいずれ改良されていくと願います。
- Soft MeshにしたいObjectにはObject Buttons(F7)のEffectパネルにParticleと同じように新たに設定します。
- Soft MeshのObjectはClearRot([Alt]+[R])やApplyRot/Size([Ctrl]+[A])で向きを初期化しておく必要があります。
- 計算はParticleなどと同じく、Sta: とEnd: フィールドに開始と終了フレームを入力します。開始フレームにはマイナスは入れられません。終了フレームにとりあえず大きな値を入れておけば問題ないと思います。
- それぞれのSoft MeshはEditModeに入ると変形が初期化されます。
- [Field]はDeformObからの距離により変形します。
- [Collision]は衝突判定により変形します。
この二つは[NoFalloff][Smooth][Sharp]のボタンを持ちますが、NoFallOff以外はMeshが消えてしまうようです。
- [Dynamic]は各頂点間のバネが働き、重力が考慮されます。
Gravity:重力。
Stiffness:堅さ。小さくしすぎると動かなくなります。
Elasticity:バネ係数。小さくしすぎると発散します。
MoveDamp:移動の減衰度。
また、右側の3つのボタンは、
-- [Mass]:Soft Mesh自体の重さを計算します。
-- [Restitution]:反射を計算します。
-- [Ext Coll]:他のObejctとの衝突を考慮します…とありますが、とりあえず当方の環境では100%落ちるので確認できませんでした。
bf-blender / Windows (2004/06/11)
Gabio氏による、bf-blender6/12分ビルドの配布です。
今週も素晴らしい開発が行われました。早速見ていきましょう!
P.S. 失礼ながら、Elysiunの機能テストスレッドのすべてのレンダリング画像をGimpで編集させてもらいました。とりあえずこれが私の新しいスプラッシュです。
概要
- バグ修正。
- Game engineの改良。
- OOPの改良。
- ポップアップとメッセージがかなり改善されました!
- PythonAPIの改良。
- 新しいスクリプト。新しいスクリプトメニューグループ。
- Game engineのPythonAPI。
- bmpファイルタイプのバグ修正。
- Helpメニューからのスクリプト登録。
Commit:
kester氏Log:
バグ修正#1334: スクリプトにSyntax ErrorがあるときにPython・GameEngineがクラッシュします。Pythonのコンパイルが失敗(例:Syntax Errorなど)した時、実行ステージを飛ばすようにしました。
Log:
その他の修正:
CListValueにPythonのMappingメソッドを追加。
Random ActuatorのBool BernoulliのPythonメソッドの修正。
IpoActuatorのメソッド、setPropertyと、forceのlocalでの動作の修正。
data Objectをprivateに。
ポリゴンのソート方法の改良―より理解しやすくなりました。
stiv氏Log:
Object.select()で選択されたObjectをアクティブObjectにするように。
Campbell Berton氏による、彼の前回のパッチの更新。
broken氏Log:
(エラー・OK・その他)メッセージとpupmenu()の大幅かつありきたりなクリーンアップと修正。スペルと文法の編集、文体の統一など。
私は使用したガイドラインと論理的根拠をCMSに追加しました。
http://www.blender3d.org/cms/Language_and_terminology.338.0.html
次の段階では、何の種類のメッセージか(そしてどれぐらい注意すればいいか、もしくはマウスクリックでスキップできるか、例えば、remove doublesのうんざりするような通知など)をひとめで簡単にわかるように、アイコンを入れることです。
モックアップ:http://mke3.net:9000/blender/ui/controls/error_ok_icons.png
broken氏Log:
ToolBoxのApply deformation・make duplis realのエラーチェックの改良(ぶかっこうなapply_object()の所為です)
これはバグ#1348を指しています。報告してくださったwavk氏に感謝します。
Log:
ActionWindowでActionが何もないときにアニメーションキーを操作しようとするとクラッシュするのを修正。
これはバグ#1354を指しています。報告してくださったgabio氏に感謝します。
stiv氏Log:
バグ#1347のパッチ。IpoCurve.evaluate()が消息不明・消失していました。
Philip Wainwright氏による投稿です。
Log:(Python)
旧APIから非難されていた下記メソッドをリプレース。
PythonReturnErrorObject
PythonIncRef
メソッドテーブルの初期化部分が見つからないことに対し、いくつかのコンパイラでWarningがでていたのを修正。
ianwill氏Log:
スクリプトの付属:
Blender2.34に向けての更新と新規追加の開始。
いくつかの新しいスクリプトはBlender内蔵でないPythonモジュールを使用するため、Pythonフルセットをインストールするか、追加のモジュールを入れる必要があります。これは現在作業中で、より多くのスクリプト、よりいいテスト方法、そしてまた、ユーザに彼らが持っていると期待できないモジュールを伝える適切な方法があるはずです。2.34からは必要なモジュールを最小のzipで配布できるので、WindowsユーザがPythonフルインストールをする必要がなくなることが期待されます。
現在追加・更新されたスクリプトを寄贈してくださったAnthony D'Agostino(scorpius)氏、Jean-Michel Soler(jms)氏、そしてCampbell Barton (Cam/ideasman)氏に感謝します。
BPython:
- 二つの新しいScriptメニューグループ:ToolsとUtils。私たちはまだGUIのどこか別のところにグループが置ける場所を探す必要があります。
kester氏Log:
ライティングを更新:
Textureの後にスペキュラを追加。(訳注:一部でめっちゃ明るくなるんですが。(汗)
Lightにプロパティを追加:Negative、No Diffuse、No Specular、Quad、Quad2
Log:
Python更新:
Sceneモジュールを追加。
Log:
独立したspecカラーの定義を追加!
ianwill氏Log:
Scripts: Campbell (ideasman)氏は彼のobj wavefrontスクリプトを更新されました。
Log:
Scripts: Campbell (ideasman)氏は二つのスクリプトを寄贈されました:bvhモーションキャプチャのimport/exportです。(感謝!)
guignot氏Log:
Metaball Objectの新しい関数:addMetaelem。これでPythonからMetaballを作成できます。
この関数の追加により、ドキュメントとMetaball.pyを変更。
Metaball Objectを作成できるよう、Object.cを変更。
sirdude氏Log:
bmpファイル書き込み部分の修正、まだ画像が若干切り取られたようになっていました。しかし、これで他の問題も修正しています(基本的にオフセットが正しく計算されていませんでした)。
これはバグ#1080です。
Log:
この修正についてhangman4 (Thomas Power)氏 に感謝します。
基本的にファイルのfflushがすべての書き込み後に必要でした。
これで#1080は終了です。
ianwill氏Log:
Scripts:
- 挙動の改善のため、unixの行末記号とCVSのIDタグに小さな改良。
- DX7エクスポータの更新(DX8版を現在作業中である作者のBen Omari氏に感謝)。
- sysinfoスクリプトの追加。
Interface (scripts):
- スクリプトのGUIがどのウインドウを選択するかについての挙動を変更。
現在はより効果的な順に、GUIは下記のいずれかを使用します:
- ScriptsWindow
- ButtonsWindow(もしスクリプトがWizardsもしくはUtilsにない場合)
- TextWindow
- 一番近い大きなエリア
- もし直前のウィンドウが使用されていた場合、ButtonsWindowにすぐ帰れるように(これが一般的になるでしょう)、スクリプトHeaderにボタンを追加しました。
Log:
- Scriptとbpythonドキュメントに小さな更新、また、二つのWarningを修正。
- Blender.sys.exists(path)関数を与えられたファイルが存在するかどうかチェックするために追加。
- 言い忘れていました。前回のcommitでblender.htmlファイルも若干更新されています。
broken氏Log:
* Forumでの議論により、File->Importメニューアイテムの表示とFile Select Buttonの表示を編集・統一。
* DXF、VRML、その他を単に通常のOpen機能としてFile->Importメニューに追加。さらに大部分の人々はこれらのフォーマットが普通にFileSelectのOpenを通じて開くことができることを知らないので、よりわかりやすくしました。
* 'Export Selected'メニューを削除し、ひとりぼっちになった古いSTLをImportとExportメニューに移動しました。ほとんどのエクスポータは単に選択されたObjectだけをとりあえずエクスポートしますので、実際には区別が必要なものではありません。
Log:
* Helpメニューにスクリプトが自分自身を登録する場所を追加しました。
* 新しいしゃれたスクリプト、'System Information'が追加されました。
(訳注:User PreferenceのFile Paths-Pythonで.blend/scriptsの位置を選択し、横のアイコンで更新するとScriptsWindowのメニューのHELPにこれが表れます。実行すると、上部メニューのHELPにもSystemInformationが追加されているのがわかります)
ianwill氏Log:
Scriptメニュー:
スクリプトのGUIとFile Selectorの場所を適切な位置にする新しい試み:
どのボタンについても、実際に奇妙なスクリーンのレイアウトをしていても、スクリプトがインタフェイスの他のメニューへ追加された時は更新されるように。
ascotan氏Log:(Python)
- 新しい内部Propertyモジュール
- ObjectモジュールがObjectのプロパティの追加・削除・変更をサポート。
tuhopuu windows (2004/06/09) post merge + render patch
bf-blenderツリーと再度統合されたTuhopuu blenderのWindows版がbjornmose氏によって配布されています。このビルドではgameBlenderは再び動くようになり、Jonathan Merritt氏によるパッチにより、緑色が強くでてレンダリングされてしまう問題が解決しています。Particle拡張も使用可能です。LSCM seamsとEditModeの操作に混乱があるらしいのですが、とりあえずLSCMは使用できているようです。
従来どおりTuhopuu.exeのみの提供です。Python22.DLLとともに2.33aのフォルダに混在させるか、必要なファイルをコピーして別にディレクトリをつくるといいでしょう。
bf-blender / Windows (2004/06/03)
Gabio氏によるbf-blender6/05分ビルドの配布です。
本日分の新しいビルドです。
現在はすべてが穏やかです。今週何があったかを見てみましょう。
概要
- Bugの修正
- envmapレンダリング時に%が反映されるように(訳注:恐らく原文のミス)
- 反転されたObjectがOpenGLプレビューで正しく表示されるように
- game engine(python API)
- Metaオブジェクト用の"Transform Properties"。フローティングパネルです
- 内部計算がより正確に
- game engineのepydoc- PythonAPIの更新:新しいメソッド
- OOPS Windowの新機能! Objectのペアレント(これは始まりにすぎません!)
- Ipo、OOPS、Action、NLA、Sequenceウィンドウに'Transform'メニューが追加
Commit:
sirdude氏Log:
Tom氏の追加がWindowsビルドに適用されました。
(私は#blendersaueを#blendercompilersではなく、#blendercodersに変更しました。実際に#blendercompilersを使っている人はいますか?)
Log:
Panagiotis Ppadokos氏のパッチにより、下記が修正:
Linuxでのswab()の暗黙的宣言により、source/blender/src内で__USE_XOPENが定義される必要があったのを修正。
私はまたSolaris版の修正のため、このファイルに#includeを追加しました。
ton氏
Log:
バグ修正#1332
EnvmapのレンダリングにRender Buttons(F10)のレンダリングサイズの%ボタンが反映されるように。
まだEnvmapの保存については実装されていません…。
Log:
レンダリング変換時に正しい法線の取得と反転を行う方法について再コーディング。古い方法は反転した行列をみつけることにより、オブジェクト毎に解決しようとしていました。ディスプレイスメントマッピングとレイトレーシングが実装されてからは、この方法では不正確になりすぎています。また、法線の反転は常に頂点の法線をも正しく反転する結果になるべきでしょう。
解決方法は現在renderHelp.cにある'puno'(頂点の法線)フラグ(set_normal_flags)を完全に再計算することです。面の法線はこの段階までは反転しません。
二つめの大きな改良には、四角形平面が平らでないときに、三角形に正しく分割する計算があります。現在三角形は、実際のまわりの形状の情報を持つ頂点の法線を元に作成されるようになり、より滑らかになる結果になりました。
これがないと、面にほとんど平行にライトを照らした時、Ray-shadowがおかしくなります。繰り返しますが、ディスプレイスメントマッピングもこれの所為で改良されています。
三つめの修正は法線の反転をディスプレイスメントのコードから除去することで、現在はより綺麗な結果が得られました。
Log:
新しくBlenderは現在、OpenGL Draw時に反転された(負のサイズの)Objectを正しく表示するようになりました。
(前述のcommitにより、負のサイズのObjectによるRaytraceの異常も解決されました…)
displaylistフラグとObject/baseフラグのさらなるクリーンアップ。#define ACTIVEはfilesel.cに移動しました(ここでしか使用されていません)。
#define GONNA_MOVEはOB_を前につけました。
Log:
ポリゴン化される前のmballのカウンタが、リンクされているmballデータが勘定に含まれている場合におかしくなり、モデリング時に異常を生じていました。
Log:
バグ修正#1340
アルファキー(レンダリング)がskyのアルファ成分を1に設定していました…これはNeoGeo時代の古い習慣で、私は何のためのものだったか全く手がかりを持っていません…。恐らく、骨董品(訳注:石投げないでくだちい)のAmiga iffフォーマットか何かの所為だと思います。現在は0になっています。
Log:
報告#1338
ディスプレイスメントとAutosmoothのルーチンの順番を入れ替え、Autosmoothが最後になりました。これはFaceのディスプレイスメントを妨げ(はずし)、他のケースでも同様に鋭いEdgeが目立っていたようです。
kester氏
Log:
クリッピング平面内にある法線ベクトルの0チェック(例えばPythonが妙な投影行列を設定していたときなど)。
錐台バウンド球の変形をワールド座標に修正。
Log:
LightをPythonモジュールに追加。
Vertexクラスに属性を追加。
jiri氏
Log:
"Transform Properties"をMetaオブジェクトに追加(EditMode中に[N])。locX、locY、locZ、dx、dy、dz、stiffnessが設定できます。
ton氏
Log:
Normalise()関数の制限が0.000000001あたりでした。floatが10-37まであるため、これはまだ大きすぎです。さらにこの値はまだ二乗されているため、平方根が問題なく行えてしまいます。
現在は10-35に制限され、極端に小さいObjectを極端にカメラに近づけた場合にFaceが消えてなくなるのを修正しました。(OOPz氏に感謝!)
kester氏
Log:
epydocをgame Pythonのリファレンスに使用(bpythonのように)。
hos氏
Log:
あるBoneのIK ConstraintがそのBoneとConstaintのターゲットBoneを持つArmatureを指すとき、IKの表示が異常になるバグを修正。
これを追跡してくださったStephane Soppera氏に感謝。
stiv氏
Log:
新しくObjectの選択状態を操作するための、Object.select()とObject.isSelected()メソッドを追加。
Campbell Barton氏の投稿です。
kester氏
Log:
GamePythonリファレンスの更新。
Actuatorのドキュメントを追加。
Log:
Sound Actuatorで必要になればDatabrowse Windowを表示するように。
sirdude氏
Log:
Cam氏のパッチにより、OOPSのメニューでペアレントが行えるように。
broken氏
Log:
'Transform'メニューをIpo、OOP、Action、NLA、Sequenceウィンドウに追加。
小さな調整を少し。
Log:
ボタンのカーブの小さな、ほとんど無意味な調整。
Stiv氏
Log:
バグ修正#1345
Curve.isNurb()のSegfaultの修正。
bf-blender v2.33a / intel compiler optimized (windows)
従来Elysiunで活躍されていたAntares氏が、Blender.org::Testing Buildsへと場を移されました。
皆さんこんにちは。このバイナリは必要なDLLなどが含まれていません。2.33aなどのディレクトリから必要なものをもってくるか、blender.exeのみをblender-i.exeなどに変更し、libmmd.dllとsolid.dllとともにコピーして下さい(このdllはbf-blenderとは競合しません)。
Ton氏から私にこの話題についてのスレッドを作る旨を告げられました。おそらくあなた方の何人かは私がした、もしくは行っている編集版を知っているでしょう。
私の編集版のBlenderは特別にインテルコンパイラを使用しており、コードの書き換えや再構成といった基本的な改良から、分岐予測、ループ展開、現在のインテルやAMDプロセッサのパイプライン技術を使用した並行命令実行、もしくは、可能であれば浮動小数点数演算と整数演算の並行実行を行っています。
しかし、主な利点はSSE(Streaming SIMD Extension)やSSE2のような、インテル(そしてAMD)プロセッサの特別な命令セットを使用した結果にあります。これらの命令セットによる8×128-bitレジスタへの一括設定はMMX技術の後継で、SIMD(Single Instruction Multiple Data)の実行をサポートします。
これはCPUが内部キャッシュにある同じ演算(例えば配列YのベクトルにXをループ内で加えるなど)を実行できることを意味します。(訳注:当方が端折りすぎてるかも)
Blenderは単精度浮動小数点単位を使用しており、プロセッサのサポートするSSE2の計算はデータ上の正確な演算を3ステップ(ロード、実行、ストア)で行えます。通常は少なくとも12ステップは必要になります。
私のBlenderバージョンはまた自動的にCPUを判別するようコンパイルされており、何のCPU上で走っているかをチェックし、パフォーマンスを向上するのに最適な命令セットを使用します。
これは私の版がP-P4やAMDプロセッサを含むいかなるx86CPUでも走ることを意味します。
MSVC++の主なコンパイラ設定は以下のとおり:
/Qaxw: CPU自動判別と可能ならSSE(2)を使用します
/O3: 最大スピード最適化とハイレベル最適化
/Ob2: どの関数でもコンパイラの判断でインライン展開化されます
これらの設定は以下のモジュールでは動作しません:
FTF_ftfont
KX_ketsji
SG_SceneGraph
私はまたIntelコンパイラを特にBlenderカーネル関数(モジュール:BKE_blenkernel)とプリマリーレンダリング関数(モジュール:BRE_render)のプロファイルのために使用しています。これはまたパフォーマンスの向上とバイナリサイズの縮小も少し行われます。
このすべてが通常レンダリング時間を20-60%縮小し、GUIの反応を少しだけ向上してくれます。
このコンパイラのひと月完全な機能を使用できるデモバージョンがwww.intel.comにあります。このコンパイラをどうやってincludeし呼び出すかについてのすべての重要なドキュメントがデモバージョンに入っており、30秒以内でできます。
Elysin内のスレッド:
http://www.elysiun.com/forum/viewtopic.php?t=17626
Windowsバイナリ:
http://www.silentthunder.de/files/blenderintel.zip
この中には他に私がblenderのいくつかの関数をアセンブラで書き直したものがあります。その一つが下記の関数です。
(訳注:MTC_Mat4MulMat4関数(4x4行列同士の内積)が続きますが、長いので省略します。参照したい方は原文をどうぞ)。
レンダリングプロセスにプロファイラをかけた後、この関数が非常に多く呼ばれていたため、私はメモリ整列化のためにSSE2命令セットで書き直しました。これがその結果です:
(訳注:前記同様SSE2を使用したアセンブラコードが記述されていますが省略します)。
両ルーチンを単精度浮動小数点の乱数を用いた結果が下記です。
標準のコード: 2.934秒で51000回実行
私のコード: 2.936秒で13000000回実行
標準版より250倍も早くなっています。^^
私はこの投稿が長文でないことを願っています。
おつきあいいただきありがとうございます。
下記は当方の環境(WindowsXP、Celeron1.7GHz、GeForceFX5200)での比較をしてみた例です。別に作業しながらだったので、あくまで参考程度です。
(AO、340x160、OSA11)
- 2.33a: 6分02秒
- intel: 4分55秒
こうなると、bf-blenderへの組み込みにも期待されますが、記事中によると、すでにAntares氏はTon氏とその件について話をされているようです。
Ton氏はまず、そのことに他の開発者も興味を示してもらえるように最適化の仕組みを公開すること、そして、他の開発者がテストできるようにし、最適化による影響の分析と、通常のbf-blenderと同品質にすることが統合のために必要だとされているようです。また、ライセンス購入も寄付でまかないたいとのことです。
Antares氏は、今回の記事で最初の目的は達成したので、今後はインテルコンパイラの購入と、他の開発者へ情報を公開していきたい、と書かれています。
ログイン
クイックリンク
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki