bf-Blender / Linux (2005/08/13)

投稿日時 2005年08月14日 | カテゴリ: テストビルド

元記事:bf-Blender / Linux (2005/08/13)

gabio氏による8/13付bf-blender Linux版のビルドの配布です。
更なる作業が完了しました。Game Engine にいくつかの新機能が追加され、いいテストが必要です。ちなみに、このビルドは Sumo と Bullet が利用可能となっています。また、モディファイア、Softbody の衝突判定、モデリングツール…などにも新機能が加わっています。
-----------------------
概要
- Game engine、bullet。
- バグ修正。
- SoftBody: Lattice にばねがつきました。
- モディファイアスタックの UI の更新。
- Loopcut smooth。
- BPY: Timeline データへのアクセス。
- 移動する Object (Armature、Lattice …)と Softbody が衝突するように。
- [Ctrl]+[E]メニューに、適切な「内側の」Edgeloop を削除する "Edgeloop Delete" が追加。
- Austin Benesh氏の新しい Image メソッド。
- モディファイアに、編集可能な名前フィールドが追加。
- Outliner にモディファイアが追加、まだアイコンが必要です。
- Armature、Hook、Softbody モディファイアが追加。
- 新しい "Mirror UVs" 機能が FaceSelectMode に追加。

Commit
erwin氏
Log:
debugdraw 用の Python バインディングを追加。
摩擦係数を調整、更にいくつか用意もしましたが、実際の機能はまだ追加されていません。

Log:
いくつかのハードコーディングされた定数を、閾値調整部分に移動。
これらの閾値を Python に露出。(「よりエキスパートな人」による設定のため)

guitargeek氏
Log:
loopcut のキャンセルで、スクリーンを再描画するように。

zuster氏
Log:
- BLO_findstruct_offset を削除。(旧式なため)

- Optimal と Subsurf のフラグへの Python のアクセスを削除(これらはもうこの方法では動作しないため、Python のモディファイアへのアクセスで置き換える必要があると認識していますが、今すぐは無理です)

- OPTIMAL モードへのインタフェイスのアクセスを削除、しかし再考が必要です…これは、現時点では SubSurf が、EditMode 外では常に描画され、すべての Edge がレンダリングされること意味しています。


intrr氏
Log:
有名な、SDLの音声を修正してくれる可能性のあるコード(setenv("SDL_AUDIODRIVER", "dma", 1))…。

#ifdef __linux__ と #ifndef __alpha__ の内部です…。

知識のある人が助けてくれるでしょう。


bjornmose氏
Log:
Lattice にばねを持たせる最初の試み。


zuster氏
Log:
- モディファイアの UI を更新。(別名、モディファイア検索(find)ボタン!!)

- EditButtons に場所を戻しました。ここに今束縛されています…Constraint スタイルの、折りたたみ可能なウィンドウに切り替えましたが、まだ作業中です。特に、何のボタンがヘッダにあるのかがわかりません(更に、現在のトグルがヘッダに残り、それらもまた、展開されたペインだった場合)。
また、move up/move down(ドラッグアンドドロップがあればもちろん素晴らしいでしょう) 用の新しいアイコンが必要です。最終的には現在のペインを、モディファイアが単に下に下にいく代わりに、水平にモディファイアペイン内で展開するようにする予定です。

- モディファイアに、UI中に表示されるエラーフィールドを追加。モディファイアからインタフェイスにエラーを返すなんらかの仕組みが必要です(特に、Python には重要)。

- ケージの決定と、ハンドリングの調整。現在、EditMode のケージは OnCage のセットと最後のモディファイアにより決定され、マッピングをサポートするモディファイアによって完全に続行されるか、もしくは EditMode で使用不可にされます。

これは若干混乱しますが、そのインタフェイスは OnCage をサポートするモディファイア用にトグルで切り替えさせるだけです ― 単にあるモディファイアの OnCage をトグルで切替できない理由が、常に明白にならないだけかもしれません。

- displistmesh_copy を、NULL でない Edge のみコピーするよう更新。

ここにはすでに表示バグが存在していましたが、新しいモディファイアが、EditMode切り替え後、ペインの一部が違うエリアに描画されることでより明白になりました。これは、100%ボタンで描画する代わりに、GL でインタフェイスの一部を描画する必要がありました。私はこの汚いつま先で、インタフェイスコード外で頑張ってみようと思いますので、Ton氏が帰るまで待つことができます。


bjornmose氏
Log:
ついに Lattice も対角線のばねを持つように。


erwin氏
Log:
沈静化の向上、より多くの調整可能なパラメータを Python に公開。
inertia/inverse inertia の、いくつかのコピー・ペーストバグを修正。
沈静化のデバッグ用カラー。


guitargeek氏
Log:
Edgeslide が、SubSurf の Optimal の「ケージ上」で動作するように。


zuster氏
Log:
- バグ修正、World Material の MapTo ボタンのいくつかがなくなっていました。
- バグ修正、LogicButtons の bool property 値のボタンがなくなっていました。


guitargeek氏
Log:
Subdivide multi smooth を少し改良。まだ完全ではありませんが、前よりは良くなりました。

しかし! EdgeRing(EditMode中、[Ctrl]+[Alt]+右マウスボタン)選択と、Subdivide Smooth multi を試してみて下さい…ちゃんと動きます(loopcut multi smooth を読んでみて下さい)。

Log:
Loopcut で Edge を選択中、[S]で Loopcut Smooth とトグルで切り替えることができます。現在の Smooth の状態がヘッダに表示されます。

また、Subdivide Smooth を少し調整。完全な四角形・三角形のケースではまだ完璧ではありません。


pidhash氏
Log:
bpython に TimeLine を追加。


erwin氏
Log:
MouseOver Sensor を修正。
Bullet に Raycast のサポートを追加(三角形の Mesh はサポートしていません。後日)
'getHitObject' に、Python メソッド getRayDirection、 getHitPosition、getHitNormal を Mouse over Sensor 用に追加。
これで、shootout.blend デモ が簡単に作成できます。

Log:
Sphere シェイプの修正、XYZすべて同じスケーリング以外でも使用できるように(楕円の作成)。
バグ修正のコメントを削除。


zuster氏
Log:
- モディファイアスタックUI に、copy ボタンを追加。

- decimation の Apply 時の警告を追加。

- いくつかのUIを更に調整(モディファイアのペインの丸め、ヘッダをトグルのみに、Object と繋がっているモディファイアスタックを伝達するため、Object Name を追加)。

- バグ修正、モディファイアの再計算が、Make Link で行われていませんでした。
- バグ修正、uiBlockEndAlign が、いくつかの Theme で、Align フラグをクリアしていませんでした。

Log:
- バグ修正、Extrude と Duplicate で自動的に Transform に入る際、生成された Surface からの情報をリクエストするように。これは、Transform に入る前に、私たちが自前で再計算してやる必要があることを意味します…適切なデザインの、Mesh データの無効化・再計算で、これが不必要になるでしょう…。

Log:
- editmesh_get_derived_base を追加、ある複数のユーザからリンクされている Mesh の EditMode で使用されます。現在の挙動は、実際に EditMode になっている Object を、そのモディファイアで表示し、その Mesh を共有する他のすべての Object は、単にそのベース EditMesh データを使用します。
100%の一貫性はありませんが、現時点では、EditMode で、それぞれの独立したモディファイアスタックと、Mesh を持つすべての Object の表示のためのアーキテクチャはありません。


bjornmose氏
Log:
作業中:移動する(Armature、Lattice …) Object と SoftBody と衝突するように。

動作は良好で、ロジックの循環にも遭遇せずスムーズです。関数ポインタの再フックにより、詳細がデバッグできず、DAG やモディファイアスタックではどうなるか…わかりません。

いずれにせよ、SoftBodyDetectCollision(..) が mesh_get_derived_XXX [in effect.c](ここに linetriangle()関数があるのです…はぁ…) を使用するために、pd->pad のビット1 を悪用しました(これが今まで「本当に」パディングであったことを祈ります)。

そして、Deflection パネルにこれを置きました(:: …もし私のチームの誰かがこんなことをすると私は恐らく首を切るでしょう)。

このコミットの主張:
これは前もってあなたに問題に気づかせるものです。
(いくつかの状況で)動作する/しないコードを持つことは検証に便利です。
私はコードは OK と考えています。よって、この問題は以下のどちらかです。

A. 私の理解が足りない
B. 私は無罪

ロジックの循環については、以下のファイルをみて下さい。
http://wund.privat.t-online.de/bt/WorkFine1.blend
http://wund.privat.t-online.de/bt/WorkFine2.blend
http://wund.privat.t-online.de/bt/WorkCrash.blend


zuster氏
Log:
- allowShared 引数を DerivedMesh.convertToDispListMesh に追加、DLM を返せるようにし、DeriverdMesh のデータを共有するためです(いくかのコピーとメモリアロケートを軽減)。

- displistmesh_copyShared 関数を追加、DLM を内部データを複製せずにコピーします。

- crease の描画を、DerivedMesh 関数を使用するように変更…これは Crease の Edge の幅のスタイルの変化を行う必要があるという意味で、代わりに、色の変化を使用した Crease のウェイト表示に置き換えました。いずれにせよ、SubSUrf の結果が Crease のウェイトをより多く示してくれるため、大きな損失とは考えていません。

- Mirror モディファイアのバグ修正、editmesh からの Edge Crease のコピーを正しく行っていませんでした。

Log:
- DerivedMesh.drawMappedEdgeEM 関数の削除、drawMappedEdges で実装可能です。

- DerivedMesh.convertToDispListMeshMapped 関数を追加。これは EditMode中に使用するマッピング情報を変換・返します。

- DispListMesh derivedmesh を、EditMode で機能が使用可能になるよう更新。

- Mirror モディファイア をケージとして使用できるよう更新。

- mirror & subsurf モディファイアを、マッピング情報を下のモディファイアスタックに適切に渡すよう更新。

これで、Mirror / SubSurf モディファイアを持つ Mesh が可能になり、両方をケージとして編集可能になりました。ミラー化された部分の選択時の動作は、もちろん Transform が反転するため、少し奇妙な感じになります。(訳注:以下言い訳なので略)


bjornmose氏
Log:
デフォームされた Deflector との SoftBody の衝突その2。
デフォームされた Mesh の使用の合図に pd->pad を消費する代わりに、pd->flag のビットを使用するように。

悪いキャストを削除。
convertToDispListMesh() の使用によりリプレース。Zuster氏へ:この方法でOKだと願います。

SoftBodyDetectCollision() の(デバッグ用の)再帰のトラップをコメントアウト。
そこの禁断の okee() を printf() で置き換えました。
(UI のクラッシュを知らせないので、あまりいいことではありません)

追記:前回のクラッシュサンプルを再びクラッシュさせるには、パネルの 'UMS' をONにする必要があります。
UMS = uses modifier stack


guitargeek氏
Log:
[Ctrl]+[E]メニューに、適切な「内側の」Edgeloop を削除する "Edgeloop Delete" が追加。この機能は他のツールを呼び出し、下記の動作を行うことにより、その Edgeloop を削除します。

Edgeslide で片側に100%スライド。
[Ctrl]で更に選択。
Remove Doubles。

新しい Faceloop が選択されたままになります。


ton氏
Log:
バグ修正#2859

Beauty fill が、1) Face 選択モードで、2) 正しい選択済の Edge がない、といったことから、図のケースで動作していませんでした。


guitargeek氏
Log:
editmesh_tools のスペースのクリーンアップ(タブへの切り替え)。

また、Edgeloop Delete をメニューアイテムに追加。

Log:
Edgeslide を少し修正。使用時にクラッシュしないように!

また、なくなったレールで Edge を Edgeslide しようとするのを修正しました。

okee() の呼び出しをエラーに変更。(intrr氏に感謝)


ton氏
Log:
バグ修正 #2871

Mesh EditMode と FaceSelectMode での選択は同期していますが、Face の Hide の設定は同期していません。これにより、すべての関連する災厄とともに、EditMode で Hide された Faceが、選択されてしまいます。
現在は、EditMode と FaceSelectMode での Face の Hide も同期するようになりました。FaceSelectMode を出たときは常に Hide されなくなることに注意して下さい!

Log:
二つのラジオシティの故障、バグ#2872#2881

- 新しい Scene を "Full Copy" で追加しても、Radiosity の設定がコピーされていませんでした。

- Scene の切り替えで、Radiosity のベーキングがリセットされていませんでした。
(Blender では、ラジオシティが行えるのは1つの Scene のみということに注意して下さい。Scene の切り替えで、ラジオシティデータは解放されます)

Log:
バグ修正#2894

Armature EditMode での[L]キーの使用(繋がっている物の選択)でクラッシュしていました。選択不可能なアイテム(インデックスが-1)の描画の適切なチェックが行われていませんでした。


erwin氏
Log:
- LogicBrick のなくなっていた True Pulse リピートボタンを修正。

- Collision のバウンディングタイプの名前の改良。
polytope → convex polytope
polyheder → concave mesh

- 名前の改良:
frequency -> the pulse delay

Log:
Bullet の Raycast の作業を少し。


zuster氏
Log:
- blendlib に VecLerpf を追加。

- Face のドットの表示を、DerivedMesh.drawMappedFaceCentersEM の使用に切り替え。まだいくつかの作業が必要なため、これはすべての選択モードで動作します(現時点ではZバッファ選択モードがOFFだと動作しません)。


bjornmose氏
Log:
Weight Paint パネルを、完全な幅にしました(まだ X、Y システムパネルの使用方法を理解しようとしているところです)
意味のない Opacity 0 を 1/8 に置き換え。

以下は8/18に翻訳追加した分です。

zuster氏
Log:
大きなコミット、選択機能をモディファイアとともに正常に動作させるため、多くの再作業が必要でした。多くのテストが必要だと思います。
私は単に大量のクリーニングをしただけではありません。これは必要でした(私はこんなことはしたくなかったのです)。選択機能は完全にモディファイアのケージオプションとともに動作するようになりました。

- DerivedMesh に foreach 関数を追加。マップされた Vertex・Edge・Face の中心を反復処理するためです。いくつかの描画関数がリプレースされ、より汎用になっています。特別な Edge の描画関数は、パフォーマンスの理由により残しています。

- EditFace の xs、ys フィールドの削除。

- Mesh / Curve / Lattice Object のスクリーン座標を反復処理するための、汎用の関数を追加。

- Object のスクリーン座標を格納するのに使用されていた、すべての calc_*verts* 関数を削除。いずれにせよ、多くのシチュエーションでは、これらはその場で再計算されてため、単に私たちは常にそれをするようになっただけです。
calc_*verts_ext はこれらのコールの一つで、コールスタックの深部まで潜って汚いことをしていました(Curarea の変更と、行列群への干渉)。

- すべての Vertex レベルの選択ルーチン(Circle、Lasso、BBox)と、最近傍 Vertex 選択ルーチン(右マウス選択)を、新しいシステムを使用するようリライト。これは
選択コードの多くをクリーンアップし、選択の構造がもっとよく判るようにしました。これはモディファイアが選択システムを完全にオーバライドできるようにする将来の作業にいいです。また、この選択方法の取り扱いにいくつか相違が指摘されていますが、これはそのいい解決となるでしょう。(Mesh の Vertex選択には、オーバーラップする選択で補助しようとするしゃれた機能がありますが、BBuf選択以外でのみ動作し、Curve や Lattice には全くありません)。

- Ton氏のマニピュレータをケージの位置に移動するコードを削除する必要がありました。これは確実ではありません(必要になれば、違う方法で出てくる可能性はあります) 。

- BezTriples.s と、BPoint.s が基本的に削除可能になりました。未だバックグラウンドの計算をスクリーン座標で行っている、editipo コードを単にリライトすればいいだけです。

- MVert.{xs,ys} がまだ他の情報のため、いくつかの場所で乱用されているので、あちこちに残っています。(これらは Short で、さらに mvert の限度が上がったため、これが実際に安全かどうかはわかりません)


guitargeek氏
Log:
バグ#2906修正の可能性。

評価順の変更のために括弧をいくつか追加しました。

Log:
バグ修正 #2906

すべての Hide の Edge の配列のアロケートをしていました。これは必要なく、単に選択された Vertex だけを Hide すればよかったのです。


zuster氏
Log:
- バグ修正、モディファイアの変換で、新しい Object からモディファイアを解放すべきでした。

Log:
- バグ修正、editmesh の Face の中心の描画が間違っていました。

- いくつかの便利なユーティリティ関数を editmesh に追加。これらは多くの Mesh コードをシンプル・明快にすることができます。チェックしてみて下さい。

- EdgeSlide を少し、綺麗に・短く クリーンアップ。
  o バグ修正、EdgeSlide が常に正しくキャンセルされていませんでした。
  o バグ修正、EdgeSlide が calc_meshverts_ext の変更後、最初の「コントロール」Edge を正しく選択していませんでした。


stiv氏
Log:
パッチ#2758:Imageモジュールの更新。
Austin Benesh氏からの新しい Image メソッド:
- getPixelI(x, y)
- getMinXY()
- setPixelF(x, y, [r, g, b, a])
- setPixelI(x, y, [r, g, b, a])
- save()

遅れてすみませんでした。感謝します。


zuster氏
Log:
- モディファイア用 eModifierTypeFlag_RequiresOriginalData を追加。デフォームの次にのみ使用可能です。(例:Mesh の Vertex のインデックスの格納)

- ModifierType.foreachObjectLink を、モディファイアデータ内の Object Link のループ処理用に追加。(ファイル読み込み、再リンクなどに使用)

- 様々な modifiers_ 関数を、ListBase の代わりに、Object を引数としてとるよう切り替え。

- ユーザが編集可能な名前フィールドをモディファイアに追加。

- バグ修正、Duplicate と Make Single User が、モディファイアデータ内の Object のポインタの再リンクを行っていませんでした。

- Outliner へモディファイアを追加。アイコンが必要です。

- Armature、Hook、SoftBody モディファイアを追加(SoftBody は現時点では何もしません)。旧Hook からモディファイアへの変換を追加。

注1:名前フィールドは、2.38のファイルの読み込みでは初期化されません。そのため、もし以前のCVS blender で保存されたファイルを持っていても、その名前はブランクです。

注2:モディファイアが Mesh 以外の Object では評価されないため、Lattice と Curve の Hook は壊れています。もし実際に Blender を使用しても、更新しないで下さい。

注3:旧 Hook はデフォーム中に風変わりなウェイトシステムを使用しています。これはモディファイアへは拡張できません。しかし、誰かがこの古い風変わりなシステムに頼っていることは疑わしく、新しいシステムはより感覚的です(この方法のフォールオフの動作も、まだ非常に間抜けな物だと私は考えていますが)。


zuster氏
Log:
- バグ修正、古いファイルが、範囲外の Hook のインデックスを持つことができるため、Hook デフォームでクラッシュしていたようです。

- バグ修正、Hook のインデックスが、EditMode を抜けたときに修正されていませんでした(おそらくこの種のパッチのために、一般的なインタフェイスが必要と思われます)。


blendix氏
Log:
新しい "Mirror UVs" 機能が、FaceSelectMode に追加。UV の回転を補完します。
Face の UV や VertexColor を1枚毎に(UV Face の赤い Edge 上で)反転します。

Martin Poirier氏提供のパッチです。感謝!


zuster氏
Log:
- SoftBody モディファイアの使用に切り替え。コントロールは可能ですが、変数は持っておらず、これらはまだ同じ位置にあります。Enable ボタンが、モディファイアを自動的に作成・有効にします。

- Hook から Hook モディファイアの変換を、ダイレクトリンクで起こるよう変更。
2.38で保存された、Hook を持つファイル用に、メモリを解放するのを忘れてはいけないことを知っておく必要があります。

- モディファイアのインタフェイスを、require-original-data フラグを持つモディファイアが、強制的にデフォームするモディファイアの向こう側に移動しないように更新。

- 強制的に、一つの SoftBody モディファイアのみ可能に。

注意:もう一度繰り返しますが、Lattice のモディファイアスタックはまだなく、そのため Lattice への SoftBody は現時点では動作しません。

Log:
- modifiers_getVirtualModifierList を追加、最初のモディファイアのポインタを返しますが、"Virtual"モディファイア を含んでいます(例えば、ある Lattice に Parent している Object が、Virtual な最初の Lattice モディファイアを持ちます)。

- mesh_modifier()を削除、すべての機能はモディファイアスタックへ統合されました(もちろん、まだキーはモディファイアとして存在していませんが、私はそれを行うべきか確証が持てません)。

- Virtual モディファイアを実際のモディファイアに変換するためのインタフェイスオプションを追加。

- Lattice Object もしくはデフォームのある Lattice との Parent のオプションを追加。

- バグ修正、Hook のインデックスへのパッチが、編集された Mesh 用の物だけでなく、すべての Hook にパッチがあたっていました。(::)

注:2.38 で保存された、Lattice に Parent している Object を含むファイルは、その Object が別の Object に Parent されているように(Blender から)見えるため、正しく読み込まれないでしょう(例:デフォームなし)。再度 Parent するか、Lattice モディファイアを追加することにより、簡単に修正できます。古いファイルは自動的に処理されます。

Log:
- バグ修正、Cage ボタンが Virtual モディファイアで正しく表示されていませんでした。

Log:
二つのすばやい修正、slikdigit氏に感謝!

- Armature モディファイアに、オリジナルデータを必要とするフラグが立っていませんでした。(しかし、動作はします)

- Add Hook が ModifierData の初期化をめちゃくちゃにしていました。間抜けなバグです!

Log:
- [Ctrl]+[Alt]+[Shift]+[T] の Timer に、recalc ob、recalc data を追加。

Log:
- displistmesh_to_mesh を現存の Mesh データ(もし Vertex 数があわないときは、Sticky、dvert、キーも含む)を解放するよう更新。

- モディファイアパネルを、手動で Hook もしくは SoftBody モディファイアを追加できないよう更新。

- すべてのモディファイアタイプで、Apply Modifier を、現存の Mesh に適用するよう変更(Material のバグを修正)、さらに、tface/mcol/key/dvert/sticky の消失について警告するように。

- モディファイア UI を、Virtual 用の開いた三角形アイコンを表示しないように変更。

- SoftBody の UI を、Enable / Disable ができるよう変更。

Log:
- バグ修正、Add Hook がモディファイアの順序の制限を考慮していませんでした。


blendix氏
Log:
バグ修正、UV Editor の Lock ボタンが動作せず、これがOFFになっていても、3DView が常に描画されていたようです。(Mac に限らず)


erwin氏
Log:
デバッグ情報を更に追加。デフォルトの ODE Solver の代わりに、Bullet Penalty Solver を有効に。いいデモを追加。


blendix氏
Log:
4つの新しい Proportional Editing モードを UV Editor の Transform にも追加。いずれ、この UV Editor は新しい Transform コードを使用することになり、これらも自動的に適用されますが、それが終了するまで、これがバグ#2920 を修正するでしょう。


ton氏
Log:
非常に小さなサイズのArea Lamp(0.001)が、奇妙なオーバーフロー・帯を生じることがありました。この付近には、まだ一つfloat要素が…saacos()。double 版にしました。

Shul氏の報告です。感謝!


zuster氏
Log:
- Subsurf "optimal" edge の描画・レンダリング設定の読み込み。

- ME_EDGERENDER フラグを追加、現時点では Plain の Mesh で FasterDrawなどをセットしても、すべての Edge が描画されるようにすること以外、ほとんど変更はありません。
この Edge の描画システムは少し改造が必要です ― 素晴らしい機能ですが、いくつか改良の余地があります。

(1) このアルゴリズムにより、描画に最適な Edge の選択が更によくなるでしょう。

(2) この Drawflag はモディファイアとの対話性がよくなるでしょう。デフォーマのついた大きなグリッドでは、フラグが、元の Mesh のみをベースに計算されるため、Edge が描画されないという奇妙なことになります。

(3) Drawflags が EditMode により破壊されなくなるでしょう。"Draw % of edges" ボタンのデザインがよくなるでしょう。

また、もちろん価値のない機能があれば落とすことになるでしょう。もし意見がありましたら、自由にコメントして下さい。





Blender.jpにて更に多くのニュース記事をよむことができます
https://blender.jp

このニュース記事が掲載されているURL:
https://blender.jp/modules/news/index.php?page=article&storyid=1368