bf-blender / Windows (2005/04/02)

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

元記事:bf-blender / Windows (2005/04/02)

gabio氏による4/2付bf-blender Windows版のビルドの配布です。


メモ
- 新しい SubSurf のアルゴリズムに注目して下さい。テストが必要です!
- 新しい Transform モード、Push/Pull (別名:非比例リサイズ、[Shift]+[P])
- [Shift]+[O]によるSubSurfのトグルが復活しています。私は待ち望んでいました。
- SoftBody プロジェクトが統合段階へ。試すことができるように!

- SConsを使用した、MSVC 7によるビルドです。
----------------------------------
概要
- バグ修正。
- MetaBall を EditMode で回転することができるように。
- Mesh の EditMode で、Proportional Editing 時に、その影響を受ける領域のクリッピングに Vertex が繋がっているかどうかを利用するように。
- Incremental SubSurf 計算が使用できるように。(スピードアップ)
- 最大 Frame 数を30,000に増加。
- 新しい Transform モード、Push/Pull (別名:非比例リサイズ)
- [Shift]+[O]によるSubSurfのトグルが復活しています。
- SoftBody プロジェクトが統合段階へ。


SoftBody は正式に ObjectButtons([F7])にSoftBody パネルが表示されるようになりました。もちろん設定の保存もされます。
詳細については、こちらを参照して下さい。時期リリースにも採用されるようです。
利用方法については、以前の記事の最後の方をみてください。

また、bf-blender / linux (2005/04/02)も配布されています。
その他の詳細は以下にて…。
Commit
zuster氏
Log:
- shadedisplist の derivedmesh への使用を修正。
- また、バグをひとつ修正! SubSurf がディスプレイリストのシェーディング時に tface のカラーを使用するように。

Log:
- DerivedMesh へ、drawFacesTex 関数を実装とともに追加。
- edit.c を DerivedMesh のインタフェイスを使用するよう変更。
- drawmesh.c を 新しい関数を使用するように変更。

当分の間、書かなきゃいけない関数はこれで最後になり、また、事実上 DL_MESH の終焉も表します。やったぁ!

DispListMesh はまだ交換フォーマットとして時間を浪費していますが、一旦 DerivedMesh がより親密な Mesh へのアクセスを提供するようなれば、なくなるでしょう。

DL_MESH(DispListMesh 用 のディスプレイリストタイプ)はまだ DispListMesh を保持するのに使用されていますが、新しい SubSurf が真の DerivedMesh の実装の使用に切り替われば、すぐに消える予定です。また、容易に殺すことが出来る decimator 用に汚い使用もしています。

- あ、そしてPotatoモードでの VertexColor の描画もするようにしました ― より以前の挙動に近くなったと思います。

Log:
- extverts のハンドリングをシンプルに。

jiri氏
Log:
- MetaBall を EditMode で回転することができるように。

zuster氏
Log:
- DerivedMesh にポインタ、Mesh->derived と Mesh->decimated を追加。
- DL_MESH displistタイプの削除!!!! 現在は直接 DerivedMesh に格納されています。
- まだこれをリリースする時にしなければならない問題がいくつか残っているかもしれません。(古いコードではあらゆる所で単にfree_displist が撒き散らされていました)。

ton氏
Log:
ProportionalEditingモード関連:

- Mesh の EditMode で、Proportional Editing 時に、その影響を受ける領域のクリッピングに Vertex が繋がっているかどうかを利用するように。
まだマンハッタン距離の類を領域のクリッピングに使用しています。よって、対角線では若干大きいでしょう。これについては後ほど作業する予定です!

- 修正: 軸制限コードにおいて、(0 0 0)の差分が使用された時に非数が発生していました。

zuster氏
Log:
- free_displist_by_type の削除。
- freedisplist_object の DerivedMesh の解放…少し応急処置的ですが、完全に安全です。ああ、Dependency graph よ、あなたはどこにいるのか!

Log:
- いくつかの DerivedMesh の描画関数がより汎用に(要素が描画すべきものか、Drawオプションを設定するものかをコールバックにより決定)。これは複数を結合できることを意味します ― 新しい DerivedMesh タイプの実装を容易にし、アプリ特有のロジックを、より DerivedMesh の実装外に、保持しやすくなります。

Log:
- 奇妙な描画のバグ、妙な Vertex が表示されていました。(DerivedMesh 呼び出し異常)

Log:
- DerivedMesh の テクスチャ描画関数の馬鹿なバグを修正 (最初の Face のみ描画していました)。
- DerivedMesh のコールバックのプロトタイプ宣言をエラー削除のために変更。

Log:
- 他の間違った mface の使用による、小さなバグを修正。

Log:
- (単なる DispListMesh のコピーではない)、本当の最初のコミット。
CCGSubSurf の DerivedMesh の実装。現時点では EditMode でのみ使用可能で、スムーズな Normal が正しく描画できません。
- これにより、SubSurf の編集がかなりスピードアップされます。

ton氏
Log:
新しい描画コードのバグ:editvertex->prev による格納に対する改造で、復元がちゃんとできていませんでした。

Log:
サブメニュー(File → Exportメニューなど)のセンタリングの修正が、メニューが左右ではなく、最上部・最下部で開いた時にも働いており、エラーが発生していました…。

zuster氏
Log:
- 昨夜のスピード向上の主張は少し過大評価気味でした。

EditMode で Mesh が再評価される時に常に行われる、再計算のコードにバグがあるとわかりました(ob->disp が EditMode で構築されていないのが原因です)。多分修正されているでしょう。
- Normal の計算・背面描画をいくつか修正。

theeth氏
Log:
Mesh の 連続する部分への PET の違うフィルの方法。より正確ですが、二つの作業用の空の配列を、ベクトルと最近傍の要素のポインタを保持するのに必要とします。

これ以上のコードは今夜以降にコミットする予定で、今は少し困っているところです。(間抜けなエラーがちょうど目前にあります。ウガー)

zuster氏
Log:
- USE_CCGSUBSURF の define を削除。(今は常にONです)
- G.editMesh->derived ポインタの追加…これを Mesh->derived の代わりに EditMesh から Mesh の派生に使用する考えです(派生する Mesh は何から由来しているかによって変化が依存する傾向があります)。

この部分はクリーニングしてもいいかもしれません。また、正しく無効化しないことによる問題もあるかもしれません。

- そして一番重要なこと:

皆はこれらの編集はまさに zuster の狂った代物だと心配しだしたようなのですが、実は大きな転換期が来たのです:インクリメンタル SubSurf(段階的 SubSurf)の計算ができるようになりました。これは大きな Mesh を編集時に、莫大なスピードの向上が期待できます。

見てみたい人へ:EditModeに入る前に、RenderButtons の rt を52に設定し、最後に計算が行われた領域からの過程の表示をするため、Edgeモード と Vertexモード (Optimalモード)をONにします。それではお楽しみ下さい!

Log:
- GCC の Warning の修正。
- EditMode で、SubSurf の設定が正しく変更されていませんでした。

Log:
- 選択中の描画時の上書きカラー(過程の表示用) の禁止。
- disable overriding color (to show aging) during selection drawing

Log:
- Optimalモードを出入りする時に過程を描画するように切り替え。
- ccgsubsurf の EditMode時、Arena アロケータを使用しないように切り替え。(インクリメンタル中はメモリは解放されません)。

Log:
- AMD64でのクラッシュが修正されたかもしれません。

theeth氏
Log:
ハードコーディング(訳注:コード中に値を直書きすること)された最大フレーム数を、define による定義に変更。(他の最大値とともに、blender.h にあります)

あらゆる箇所で変更を行ってみました。私が何もミスしていないことを祈るばかりです。

また、最大フレーム数を30,000まで上げました(このコードの保守をする人が安全に元に戻せるよう、一つの場所に集めました)。
この制限はマーケティングビデオの請負に必要で、コミットした方がいいでしょう。

Log:
Transform の修正。

Mesh用のコネクテッド PET がいくつかのケースで無限ループに入っていました。修正により少し早くなりました。
numinput フラグのリネーム。
TransInfo フラグの衝突を修正。これはクラッシュが起こるのを待つばかりでした。
必要な時に中マウスボタンと、軸制限のホットキーを禁止する NO_CONSTRAINT フラグが正しく使用されるように。

Transform する行列を適用する前にマニピュレータを描画する際の、マニピュレータのフラグのチェックを追加。中マウスボタンで回転を行う時、すごく妙なことになっていました。

Log:
- Push/Pull (別名:非比例リサイズ、オリジナルのアイデアはRobert Tiess氏によるもの)。前回のコミットに少し入り込んでいたので、、完了させた方がいいと思いました。

[Shift]+[P](以前はフリー)により使用可能で、挙動は Shrink/Fatten とよく似ています。マウスを引くと中心から引き、押すと中心に向かいます。もちろん軸制限や PET とも共用できます。

Log:
くそっ、新たなバグ修正ですよ!

MeshのコネクテッドPET がカーブしている形状で奇妙な動作をしていました(Desoto氏による報告)。すでに繋がっている Vertex 上での塗りつぶしの動作の一部が、二つの有効な処理以外の物を行っていただけだとわかりました。(描画を少し補助)

zuster氏
Log:
- ccgsubsurf の Crease の挙動の条件付きコンパイルを外しました。(常にON)
- バグ修正、Crease が インクリメンタルに変更後は正しく評価されていませんでした。

Log:
- Crease が尖るバグの修正 を ccgsubsurf へ適用。

theeth氏
Log:
キャストの Warning を transform_manipulator から除去。
Transform 中、PET が transform フラグとしてチェックされるように。PET を使用しないコンテクスト(Extrude、Duplicate)にはこの方法でとても綺麗になります。
Sphere を 新しい PET のフォールオフモードとして追加(アイコンその他すべて)、より(私が思うに)論理的な感じになるよう並べ替えました。

また、[Shift]+[O]によるSubSurfのトグルが復活しています(ObjectMode での PET 用となっていましたが、あらかじめ用意されていました)。

zuster氏
Log:
- 旧 SubSurf を独立した Vertex がある Mesh に使用するとクラッシュするバグを修正。

theeth氏
Log:
PET モードでの Median Center がおかしかったのを修正。(JMS氏による報告)

必要である選択された要素数ではなく、要素の総数で実行中のベクトルの合計を除算していました。

ton氏
Log:
SoftBody プロジェクトの統合段階。

ユーザレベルでの注意は下記の Wiki にあります。
http://wiki.blender.org/bin/view.pl/Blenderdev/Softbodies
後ほど blender3d.org のCMSに追加する予定です。

技術レベルの注意はまだ途中ですが、ここに関連事項を書きます。

- すべての設定の格納、ファイルへの読み込みと保存のため、ob->soft を SoftBody 構造体にしました。
- made ob->soft 構造体struct SoftBody to hold all settings, and read/save in files

- 旧設定からの(一時的な!)変換の追加。SoftBody の実験の古いファイルを読み込み、上書きします!

- SoftBody 用の API の呼び出しをクリーンアップ、今は5つのみになりました。
sbNew()
sbFree()
sbObjectStep() (アニメーションステップ)
sbObjectToSoftbody() (完全にデータの再初期化)
sbObjectReset() (モーションのリセットのみ)

- API 呼び出しは時間にフレーム数を許容するようになり、Softbody.c で変換されます。

さらに、内部コードは少しクリーンアップされました(なくなったタブなど)。また、より多くの Object のサポートを追加する方法のヒントとともに、なるべくいい構造体の定義になるようにしてみました。これについての注意を書いてもいいでしょう…。

Log:
強制的に再計算するため、ob->softflag 用に OB_SB_REDO シグナルを追加。
Weight Paint 後に使用されるため、すぐに更新されるようになりました。

stiv氏
Log:(python)
小さなハウスキーピング:
Object.c ― 邪悪な1文字の名前を拡張。エラーメッセージが判りやすくなりました。
doc/Object.py ― Object.getData()のドキュメントを明確に。

zuster氏
Log:
- Optimalモードで、Mesh が 選択した Edge の下のEdgeを描画していました。時間の無駄です!
- Solid の Face 描画が、hide されている Face を考慮するように。
- 表示が選択された時、選択が hide されている Face の描画に作用するように。

Log:
- EditMode 時の hide されている Edge の描画の修正。(OptimalがOFFの時)
これは DerivedMesh の実装内にあり、描画アルゴリズムが私の望む場所になかったため、若干改造のようになってしまいました。


もうリファクタリング系の訳は飛ばそうかなぁ…。



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

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