bf-blender / Windows (2004/09/24)
投稿日時 2004年09月25日 | カテゴリ: テストビルド
|
元記事:bf-blender / Windows (2004/09/24) Update *fgons*
gabio氏による9/24付bf-blender Windows版のビルドの配布です。 体調不良により遅れましてすみません。
これは更なる通常のビルドです。ログとともに楽しんで下さい。 もちろん、もしあなたが分散レイトレのパッチを望むなら、私はlevon氏のビルドをお勧めします。 http://www.blender.org/forum/viewtopic.php?t=4665
機能の概要 - バグ修正 - editmesh.cのリファクタリング(訳注:機能をそのままに、コードを変更すること) - Worldモジュールの新しいbpyメソッド - Panel contextの'Panels'メニューによる選択の追加 - Hos氏のNLAのStripメニューにNLA move up/downを追加 - Window.Theme: 新しいサブモジュール - EditMeshのリファクタリング+Undoの記録 - fgons
Commit: jiri氏 Log: obj_export.py - Cam(ideasman)氏によるエクスポートのスピード向上。 - インデントの修正。
ton氏 Log: editmesh.cのリファクタリングその1。巨大なファイルを論理的なパーツに分離し、インクルードファイルに内部関数と外部関数を明記するよう変更。
include/editmesh.h: editmesh_xxx.cファイルの内部呼び出し include/BIF_editmesh.h: これらのファイルの外部呼び出し
src/editmesh.c: 基本的な alloc/list とEditModeの出入り、Undo、Separate。 src/editmesh_lib.c: すべてのeditmesh_xxx.cのための基本的なユーティリティコール(no UI) src/editmesh_add.c: プリミティブの追加、Duplicateの追加、Vertex/Edge/Faceの追加(UI) src/editmesh_mods.c: 選択、移動変形(UI) src/editmesh_loop.c: knife、loop select、loop subdivのようなloopツール(UI) src/editmesh_tools.c: その他のツール(extrude、spin等)(UI)
そして新しいファイル:
src/meshtools.c: EditMode外のMeshのツール(normal、draw flag)
broken氏 Log: 'Load UI'オプションをFileメニューからFileselect Windowのヘッダに移動。
theeth氏 Log: Stretch ConstraintによるScaleのバグの修正(実際には先週に同じバグがTrackToでもありましたが、StretchがScaleに影響するため、より深刻な事態になります。
バグの手っ取り早い説明:Armatureのサイズ変更がBoneサイズへのStretchに妙な効果を与えていました。
ton氏 Log: コード中のobject_waveへのすべての呼び出しを削除、deform.cのmesh_modifier()に移動しました。
現在はhookの一番上、Lattice/Curve 変形とArmatureの前にwaveが作用するようになりました。 しかしまだ続きます!
theeth氏 Log: Matt氏のlampサブメニュー。
editobjectの#includeを"module"で再構築しました。
stiv氏 Log: Worldモジュールの、Worldを現在のSceneに設定するための新しいbpythonメソッド、my_world.makeActive()。
Campbell Barton(ideasman)氏の投稿です。
eeshlo氏 Log: テストcommit。 xmlエクスポートで、エクスポートディレクトリを設定しなかった時にアニメーション時にクラッシュしていたバグを修正。 代わりに相対パスをBlenderの機能に使用するようにしましたが、もし、まだ何人かの(Windows)ユーザがいくつかのケースで問題があったとしても驚かないで下さい。
broken氏 Log: Panel Contextの'Panels'メニュー(Buttons Window)による選択を追加。縦のレイアウト時にタブがスクリーンから隠れた際に便利です。
Log: Hos氏のNLAのStripメニューにNLA move up/downを追加。また、'Strip Properties'が再び利用可能に。
IanWill氏 Log: - Blender: Blender.Get()にオプション'scriptsdir'を追加。 - ドキュメントを少し更新。 - Object: getMatrixに小さな修正:好ましくないループになるのを防ぐため、during_script()をチェック。古い挙動(2.34以前)にするためのオプション、.getMatrix('oldlocal') を追加。 - バグ#1275、SceneのREDRAW Scriptlinkが実行されていなかった(それを実行する呼び出しがなくなっていました)のを試験的に修正。 http://projects.blender.org/tracker/index.php?func=detail&aid=1275&group_id=9&atid=125
drawview.cのdrawview3dspace()内にその呼び出しを追加しました。これによりScriptlinkはView3Dが表示される度に呼び出されるようになりますが、Object Redraw Scriptlinkでも同様に起こります。いずれにせよ、これはまだテストです。この場所はScene Redraw Scriptlinkが、あるObjectが再描画されると、すべてのScene内のObjectも同時に再描画されるのに似ている、というアイデアを元に選びました。
- Window.Theme: BlenderのThemeオプションのget/setする新しいサブモジュールです。 - save_theme.pyスクリプトを追加(現在Helpメニューにあります)、現在のBlenderのThemeを実行可能なスクリプトとして保存します。(現在Scripts→Miscメニューで見ることができます)。
インタフェイスの適切な位置の定義や、ドキュメンテーションへの追加(今のところ、追加されたスクリプトとそれが生成した物が、新しいモジュールの利用方法についての非常にいいアイデアを与えてくれるでしょう)、そして恐らくSpaceScriptのためのThemeの拡張など、Themeについてより多くの作業があります。
jiri氏 Log: - Cam氏はManuel Bastioni氏のバグ報告を修正されました。(感謝!) - 私もバグを一つ修正しました。
ton氏 Log: EditMeshのリファクタリング+Undeの再コーディング。
そのチェンジログは非常に長いです。Webページのも長いです。 http://www.blender3d.org/cms/Mesh_editing_rewrite.425.0.html
EditMeshのリファクタリングノート(ユーザ用)
**** 新しい選択モード
MeshのEditModeに入ったとき、三つの選択モードが選べます。これらは3D Headerのアイコンで示されています(ホットキーは今探しているところです!)
- Vertex Select 従来のようにVertexの選択で、以前のバージョンの動作と完全に互換性があります。
- Edge Select Vertexは表示されなくなり、デフォルトではEdgeの上で選択するようになります。 これは本当のEdge選択で、Faceの4つのEdgeの中の3つを選択しても、勝手に4つめが選択されないことを意味します。
- Face Select Vertexの代わりに、選択「ポイント」がFaceの中心に表示されます。 選択されたFaceはまた、Edgeのようにアウトラインに色が付きます。これもまた本当のFace選択で、そのVertexとEdgeの選択状況に関わらず、それぞれのFaceに独立して行われます。
[Shift]を押しながら選択モードを押すと、上記の選択を組み合わせることができます。現在、選択がミックスされるようになり、期待どおりの動作をするでしょう。
例:Edge+Face Selectモードで、Faceの4つのEdgeを選択するとそのFaceも選択されます。
選択モードと(半透明のFaceやNormal、Solid Drawのような)オプションのDraw Modeがすべて動いています。BlenderのMesh編集ツールのすべても同様に正しく選択モードに反応ようになりました。 最も顕著なのは以下の物です。
**** Extrude
EdgeもしくはFace Selectモード中のExtrudeは、Extrudeするものと、Extrudeしなければならない物のより正確なコントロールを可能にします。見本としてチェッカーパターンを選択し、Extrudeしてみて下さい。
新機能は、FaceがExtrudeされた時の固定された変形です。これは常に古いFaceのNormal(の平均)に追従し、3DViewでの作業がより楽になります。[G](Grab)、[R](Rotate)、[S](Scale)を押すと、通常の変形モードに切り替わります。
**** 他に注意すべきもの
- EdgeとFaceのHideは選択したモードによって挙動が違います。 - 編集中、FaceのNormalは常に更新されるようになりました。 - Border Select([B]キー)はEdge用については二つの違うルールがあります。一つのEdgeが完全に領域の内側にある場合、完全に内側にあるEdgeのみが選択されます。 それ以外の場合、領域に交差するEdgeが選択されます。 - Faceモードの時、Vertexの追加、Edge、Circleプリミティブは見えなくなります…。 - "Add monkey"は現在は普通のプリミティブとして動作するように(回転され3Dカーソル上に生成されます)。 - Mesh Undoは完全に再コーディングされ、Vertex KeyとGroupの問題が解決されているよう願うばかりです。 - EditModeへの出入りも完全に再コーディングされました。特に大きなモデルでは、かなりスピードが上がったことに気づくでしょう。
**** Todo
Zバッファによる選択、UVテクスチャの表示と編集を含む、'FaceSelect mode'の機能のEditModeへの追加。
EditMesh リファクタリングノート(プログラマ向け)
**** フラグの使い方
"->f" フラグはeditmesh.cとeditmesh_lib.cのコア関数のための予約となっています。実際には現在は選択状態にしか使用されていません。 "->f1" と "->f2" フラグは自由に使えます。これらはVertex/Edge/face構造体で利用できます。自由であるがため、これらのフラグを使用している他の関数を呼び出すとき、チェックは慎重に行ってください…例えばextrude()もしくはsubdivide()がこれらを使用しています。
**** 選択フラグ(Selection flags)
EditVert: eve->f & SELECT EditEdge: eed->f & SELECT EditFace: efa->f & SELECT
- 選択はhideでない場合のみ使用可能です! - 選択フラグは常に更新されますが、しかし、 if 選択モード >= SELECT_EDGE Vertexの選択フラグは不正になる場合があります。 if 選択モード == SELECT_FACE Vertex/Edgeの選択フラグは不正になる場合があります。 これはVertexもしくはEdgeが共有されている所為です。
- Vertexを選択する場合 eve->f &= SELECT
- 常にEdgeを選択する場合 void EM_select_edge(eed, 1) // 1 = select, 0 = deselect
- 常にFaceを選択する場合 void EM_select_face(efa, 1) // 1 = select, 0 = deselect
- すべてのデータの'f'フラグをセット void EM_set_flag_all(int flag); void EM_clear_flag_all(int flag);
- 旧faceselectedOR()とfaceselectedAND()もまだありますが、そのVertexの評価にのみ使用されます。
**** 選択を扱うコードのヒント
もし選択モードが 'face'の場合、VertexもしくはEdgeの選択は上位(下記参照)にフラッシュする必要があります。'Edge'選択モードにも同じことがいえます。これはすべての選択をコーディング中、注意を向けておく必要があるということです…ある一つのFaceの4つのVertexを選択しても、もう自動的にそのFaceが選択されることはありません。
しかしながら、上記のコールを使用することで、少なくとも選択は下位(Vertexレベル)にフラッシュされます。その呼び出しは以下のとおり。
void EM_selectmode_flush(void);
これは選択モードを元に、選択を上位にフラッシュします。この関数は下記のような動作をします。 - もし選択モードが'vertex':Edge/Faceが選択されたVertexを元に選択されます。 - もし選択モードが'Edge':Faceが選択されたEdgeを元に選択されます。
上手くコントロールされた状況ではちゃんと動作します。
しかし、Faceモードで単にVertexの選択を変更しただけは、まだFaceは選択されません! 本当にもし単にVertexの選択だけで動作することが避けられないのであれば、このコールを使用して下さい。
void EM_select_flush(void);
現在この関数は、選択を現在の選択モードを参照せず上流にフラッシュされます。しかし、チェッカーボード状のFace選択のような特殊なケースでは破綻する恐れがあります。よってこれはあなたが他のすべてが非選択になっている(もしくはそれを選択解除した)のを知っている場合にのみ使用して下さい。例:プリミティブの追加。
**** Hideフラグ
EditVert: eve->h EditEdge: eed->h EditFace: efa->h
- すべてのhideフラグは常に新しく更新されます。 - hideしているVertex/Edge/Faceは常に非選択状態になります。なので選択されているものだけを操作する場合、hideフラグのチェックは必要ありません。
**** EditModeとのUndoの統一
新ファイル: editmode_undo.h ポインタハンドルスタイルのUndoを実現する非常に素晴らしい関数です。たった三つの関数で、あなたのUndoは空へ舞い上がります! このCファイルには素晴らしいリファレンスがあります。
また、古いUndoシステムは置き換えられたことに注意して下さい。現在Mesh自身へ最小限の依存に(EditModeへの出入りを悪用しなければ)留めており、EditMode関数により上手く制限されています。
**** EditModeへの出入り Going in/out editmode
すべてのVertex/Face/Edgeが3つの大きなチャンクに割り当てられたためスピードアップしました。Vertex/Face/Edgeにはこのようなデータが解放できないことを示すためのタグがセットされています。
また、Edgeのハッシュテーブル(参照テーブル)がEditEdge自身の一部を除き、すべてにおいてもはやmallocを使用しなくなりました。
Log: 小さなこと:Faceの中心のためにRecalc normalsをSubdivideの後に追加。 私たちはこれをすべてにおいて非常によくチェックする必要があります。
Log: 三つのバグ修正、ircのテストに感謝します!
- Separateのクラッシュ。 - 'Face dot'Themeのボタンが間違っていました。 - 非選択Vertex上でのマウスクリックが動作していませんでした。
Log: loopcutの修正、再構築後は動作していませんでした…。
broken氏 Log: バグ修正#1581、toolboxがtransform propertiesパネルをEditModeで正しく開かないことがありました。
ton氏 Log: - フェイクポリゴン(コード中ではFGonと命名)サポートの基本的なコード。今は殺してあります。 - Meshのhideフラグが、EditModeを出入りした際に復元するよう、正しくsaveされるように。 - Extrudeの後、Face・Edgeが間違ったSelectフラグを持っていました(Vertex Select Modeのみ)。
- addfacelist()の新しいルール:もしサンプルが提供されれば、edgeもコピーするようになるでしょう。これで多くの不細工なコードを防ぎますが、もしそれが望みどおりにいっても、テストは行います…。
Log: 新機能:フェイクポリゴンもしくはFace ポリゴン、もしくはFGonsと名づけました。 単にFace群を選択(適正なフラットポリゴンを選ばなければなりません)、[F]キーを押します。実際の動作は選択されたグループとして最適化されます。Solid Drawmodeに最適です!
更に小さな追加の修正が全体のデバッグプロセスにされています。 古いエラーが三角形のloopselect、subdivisionコード、Selectionに見つかっています。
NOTE: subdivideはまだVertexレベルでしか働きません。
Log: 全ての種類の修正が新しい選択モードに。
- circle-selectが働くように。 - edge/face selectのdeleteオプションが期待通り動作するように。 しかし、メニューのより適切な選択のセットについてチェックする必要があります。 - MaterialのAssign・Select Materialオプションが新しいモードで動作するように。 - [Shift]+[F]のFillが適正なSelectフラグを残していませんでした…。 - Border selectがface-gon(fgons)で動作するように。 - 'draw normals'とfgonが動作するように。
|
|