bf-blender / Windows (2005/03/20) updated

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

元記事:bf-blender / Windows (2005/03/20) updated

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

ここ数日間、開発に大きな波が押し寄せてきています。二日で二つのビルドに充分なほどです。

更新:新しい興味深いものが再び来ました。また、.blenderディレクトリを再インストールする必要があることに注意して下さい。もししたくない場合は、注意深く変更してください。
(訳注:今回は全く時間がなかったため、正直自信が全くなく、この辺は後ほどフォローします。他にも色々と変な部分はあると思いますので、うのみは禁物ということで)

新しいTransformについての詳細はこちら: http://wiki.blender.org/bin/view.pl/Blenderdev/TransformRefactoring
SConsを使用した、MSVC 7によるビルドです。
-----------------------------------
概要
- 復活: RotとSizeの基準点のIndividual Element(Object) Centers。
- Python: 新機能を含むguitargeek氏提供のパッチ。(texte3Dモジュール)
- バグ修正(#2123#1655)
- 新しいスクリプトメニューエントリの追加。
- メニュー登録機能の更新により、Scriptフォルダでツリー階層が可能に。
- Transform widgets:ScaleとRotateバージョン
- Python: Blender.Run(script)の追加 + ドキュメント更新。
- 新しい Bpython Objectメソッド: insertIpoKey()。
- 新しい Material メソッド:insertIpoKey( key_type )。
- CCGSubSurf ライブラリのblenderへの最初の統合。

---update---
- Scripts(Scriptsディレクトリに対するいくつかの変更)
- widget UIの調整:
 -- Translate(Grab)/Scaling(Size) widget を使用している際の「ゴースト」化
 -- Rotate Widget 使用中に角度を示す「パイチャート」ゴーストを追加。
 -- ユーザメニュー(InfoWindow)の "View & Control" に Widget 用の設定を追加。
 -- Size(サイズ):Widget全体のサイズをウィンドウサイズのパーセンテージに。
 -- Handle(ハンドル):Widgetの半径のパーセンテージに。
 -- Hotspot(判定領域): ハンドルのクリック用、ピクセル数。
 -- Fixed Size: Widgetのサイズをウィンドウサイズとは独立するようにするオプション。
-widget: グローバル/ローカル/Normal軸をサポートするように。


Commit
theeth氏
Log:
- RotとSizeの基準点のIndividual Element(Object) Centers。EditModeでは現在は微妙に役に立たないのですが、私たちのあのバイナリで驚くことになるでしょう。

Transform を Flyモードに切り替えることができるように。(GRS)

BIF Constraint呼び出しのバグを修正、startConstraintの呼び出しと空間行列の正規化が必要でした。(これはマニピュレータに影響していました)

ascotan氏
Log:
- guitargeek氏提供のパッチ。
-内容:
*Text3dへのアクセス - Pythonを通じ、Font Objectの操作ができるように。
*Object.linkの更新 - calls text_to_curve upon ob_font link for drawing
*constant.hの更新 - constant type checking define
*curve.cの更新 - clamp values on getters/setters
*Text3dモジュールのクリーンアップ。

-ianwill
Log:
BPython:

- Scripts:
"Save Current Theme" スクリプトがメニューのスクリプト登録情報の自動更新からはじかれていたのを修正。

Campbell氏のsel_same.pyスクリプトの文字列を一組、表現を変更+新しいメニュー位置に移行(3DViewのFaceSelectMode→Selectメニュー)したため、より説明的な名前に。

help_browser.pyスクリプトを少し更新。

前述の変更は下記に関連します。
- 新しいスクリプトメニューのエントリ:Render(レンダラへのエクスポータ)、Themes、FaceSelect(これはすでに正しい位置にあります)。ScriptsWindowのScriptsメニューを更新したため、利用できるエントリがすべて表示されませんが、そこでは一つだけを見えるようにするつもりです。

- メニュー登録をScriptsフォルダをツリー状にできるように更新。release/scripts/ディレクトリは近いうちにcoverters/、modifiers/、generators/等のようなサブディレクトリに更新すべきです ― 先に討論する方がいいでしょう(もしくはしますか? 私もミーティング中のircでの長い討論を恐れています。)

- モジュール:
Blender: 'udatadir' オプションを .Get()関数に、変数 Blender.mode を Blenderが BGモードもしくはインタラクティブモードであるかを示すために追加。
NMesh: Campbell氏の nmesh.transform(matrix, recalc_normals = False) メソッドを追加。(手を入れたため、もし動かなかったら私の所為です)。

- バグ修正:
#2123: http://projects.blender.org/tracker/?func=detail&atid=125&aid=2123&group_id=9

Ken Hughes氏の報告です(感謝!)。氏は後に正確な問題点も発見されました(これはText.Load内にあり、ScriptLinks にはありませんでした ― もしその時Emailだけをチェックしていたら…今日の1時間以上をこの問題を見つけるのに失っていたでしょう:M_Text_Loadに渡すファイル名が、後で add_text によって呼び出される関数によって上書きされていたことを)。また、Text.Load は渡されたファイル名が存在するかチェックしてないように見えました(ポカーン)。今は行うようになっています。

#1655: http://projects.blender.org/tracker/?func=detail&atid=125&aid=1655&group_id=9

Chris Want氏の報告です(感謝!)。コマンドラインで "blender -P script" がBGモードで正しく動作していませんでした("blender -b blendfile -P script")。

動作にはいくつか小さな変更を行う必要がありました(例えば、スクリプトでのBGモードは明示的にハンドリングされておらず、動いていたのは副次的な効果のためでした)。興味のある方は更新後のレポートもしくはAPI_intro.py ドキュメントファイルをチェックうしてみて下さい。テストを重ねた後、更なる更新を行うことにしましょう。

多くの場所をBGモード時にRedrawを呼ばないよう変更、公式に使用可能となりました。BGモードでのレンダリング時には、Blenderは自身の情報を出力します。もしこれがやっかいなことになると考えられる場合、いくつかの "if (during_script())" をbpythonの外側に追加する必要があるでしょう。

- あちこちにあるWarningを削除、ドキュメントを更新。

ton氏
Log:
Transform widget:Size と Rotate 版

使用方法:ヘッダの(仮の)アイコンを押して下さい。widget のタイプは[G]、[R]、[S]を一度押すと変化し、現在の Widget のタイプが違うとそれに切り替わり、そうでなければ通常の Transform() に移行します。

Widget は精度と正しい描画等のため、少しテストが必要です。
Rotate Widget は中心に「トラックボール状」に回転するためのボタンがあります。後者はまた、ホットキーベースの回転にも使用できます。

現在のコードでは、すべての Widget は「グローバル」空間に、そしてEditModeにとどまっています。また、通常のTransformを使用している間の Widget の更新をしないようにすべきです。

2つのバグ修正:
- PoseMode での 2Dの中心点でのRotにエラーがありました。
- PoseModeでのTransformにタイプミスが原因(& と |)でクラッシュの可能性がありました。

ianwill氏
Log:
BPython:
- Blender.Run(script)の追加 + ドキュメントの更新(以前のコミットで書くのを忘れていました)。

以前の私のコミットから二つのミスを修正するテスト。

- nmesh.transform(): 昨日、アフィンベクトルの4番目のコンポーネント=0なのを忘れていました。現在はTransformに伴い、Normalで更新されています。

- Tonが指摘した、スクリプトを探索の際のスクリプトディレクトリの再帰解析の問題。私は単に "//" についてのトリック、さらに悪いことに、最悪のケース(例:"/")に対して保護することを忘れていました。現在のコードは BLI_convertstringcode を "//" の処理に使用しており、if dir = "/" の時は処理しないことにしました。ただし、以下のような制限があります。

サブディレクトリ検索の最大深度は4。
ツリー内の最大ディレクトリ数は30。

私は更に作業を行い、チェックをしますが、これらの変更はテスト済で、より安全なコードになったと思います。もちろん、だからこそ私はコミットしたのですが。この問題については申し訳ないと思っています。私には防御的プログラミングについてのレッスンが必要でしょう…。

ton氏
Log:
Rotハンドラの新バージョン。私はこれを気に入っています! 他の皆さんも気に入るでしょう。

Log:
小さな修正:EditMode時のTransform()中、他のObjectが選択されていた場合、これらのObjectがTransformカラー(通常白)で描画されていました。

zuster氏
Log:
BLI_winstuff.h の使用方法を少しクリーンアップ。
- render.h 内の参照を削除(非常に悪いことで、本当に必要でない限り、プラットフォーム特有のヘッダファイルをこんなに広い範囲でincludeすべきではありません)。
- BLI_arithb.h に M_PI、M_PI_2、M_SQRT、M_SQRT_2 の定義を追加…ここは「標準」のBlenderのMathヘッダファイルとしてよりふさわしい場所です。残った winstuff.h もさしあたりシンプルになります。

- 他の変更はパッチにあるため、このコミットによる動作はすべてOKです。

ton氏
Log:
グローバル変数 G.moving にはいい感じにフラグの定義と、意味の追加がされました。

- move object mode
- move editmode/pose mode
- move with widgets

zuster氏
Log:
- いくつかのWindows特有の define を BIF_gl.h に、OpenGL を windows.h を include せずに使用するために追加 ― 主な理由は windows.h が非常に多くの場所で include されており、この変更によって、これらの include のほとんどを排除できるからです。

Log:
- (最近の変更により)廃れたすべての BLI_winstuff.h の include を削除。

NOTE: BLI_winstuff.h は windows.h 周辺のラッパーとなり、windows.h で定義されているさまざまな未定義のものをハンドリングすることを目的としていました。プラットフォーム特有のヘッダは少数の場所でのみincludeすべきです。これで BLI_winstuff.h のinclude数は16に減少されています。この数字は(以前使用されていた144などに比べ)より合理的な数値です。

stiv氏
Log:(python)
Warningの修正:キャストなしのポインタからintegerへ初期化を変更。

ton氏
Log:
- Rotation Widget に補助線を追加。
- Widget のデフォルトをローカルモードに切り替え、キー/ボタンは後ほど。

stiv氏
Log:
新しいBpy Objectメソッド:insertIpoKey()
Objectの LOC、ROT、SIZE、LOCROT、LOCROTSIZE の IPOキーを挿入します。
Johnny Matthews(guitarGeek)氏による寄与です。

theeth氏
Log:
Tonは彼の最後のコミットでPET(Proportional Editing)を含むRotationモードとObjectのローカル軸制限を壊してくれました。
これらを復活し、Trackball Rotate での PET を使用可能にしました。

Rotation マニピュレータの描画コードを、常に選択の中心に見えるよう、実際にTrackballの回転する球とビューとを連係(getViewVector 使用)するように変更しました。
これは恐らくパースペクティブモードではスクリーン中心から離れたところでの選択が酷い状態になっていると思います。
http://www.clubinfo.bdeb.qc.ca/~theeth/screenie.jpg

getViewVector を実際には軸制限と関係する関数ではないことから、transform_constraints.c から transform_generics.c に移動。また、TransInfo 構造体から独立させたため、どこの場所でも便利になりました。

guitargeek氏
Log:
Text3d 追加にともない、いくつかのドキュメントを追加。

Log:
Object insertIpoKey 追加にともない、いくつかのドキュメントを追加。

ton氏
Log:
- getViewViewvector()で方向の反転を修正、OrthoとPerspectiveでは逆になっていました。
Martinへの注意:まだPerspectiveモードでは回転の正負の定義に問題があります…更に計算が必要です!
- Transform Widgets を PoseMode に追加。
- EditMode の Bone の追加を G.moving に設定するように。他の選択されたObjectも、Widget以外は表示されなくなりました。

Martinの昨日コミットのWarning:Trackball と initTrackball が Static で宣言されており、一方 Transform.h はそうではありませんでした。Q:なぜこれらの関数を.hファイルにexportしたの?

stiv氏
Log:
getDrawMode のまずい参照を修正。

ton氏
Log:
三つの Rot マニピュレータを以下により遊ぶことができます。

G.rt = 0: それぞれの回転軸につき一つのハンドル
G.rt = 2: 伝統的な半円の回転ハンドル
G.rt = 3: 複合バージョン
(rt は RenderButtons にある一般的なデバッグ変数で、"Render Sequence" の下にあります)

stiv氏
Log:
新しいMaterialメソッド:insertIpoKey( key_type )
現在のフレームにMaterial Ipoキーを挿入します。
Johnny Matthews氏による寄与です。

guitargeek氏
Log:
Material.insertIpoKey 追加による、ドキュメントの更新。

zuster氏
Log:
- すみません、コードのコミットにより、偶然game engineが使用できなくなっていました。

Log:
- いくつかのWarningsを削除(win32でopen/seek/read/write で io.h が必要でした)。

theeth氏
Log:
カーソルがデータ空間の中心にない場合、Warp が妙な挙動をしていました。修正済です。
Objectがグローバル空間の中心にない場合、EditMode時のWarpのヘルプ表示行が間違っていました。
Warp用のバウンディングボックスの計算がビュー空間でも行われるようになり、ビューと並んだ時には常に最大化されるようになりました。

マウスによる Shrink/Fatten の正負の切り替えを、水平の動きから上下の動きに変更しました。プルダウンでShrink(縮小)、プルアップでFatten(拡大)です。これはいくつかの作業でもまだ使用されていたようです。

バグ修正;中マウスボタンによる制約の中心の異常(他の日に私がコミットした修正を潜り抜けていました)。
バグ修正:Transformでモードを変更し、EditMode中にローカル軸制限に切り替えるとクラッシュしていました。これは initTransModeFlags 内の TransInfo フラグがリセットされることによるものです。現在は initTrans 内で正しく完結しています。

Log:
- 最初の CCGSubSurf ライブラリのBlenderへの統合。このライブラリは単一の Cファイルで、extern に入れる価値はありませんが、恐らく公開されている CCGSubSurf リリースに同期するようになるでしょう。できれば近いうちにそうしたいと思います。

- 現在の実装はビルドシステムのどこかにある USE_CCGSUBSURFLIB の定義を許可する必要があります。このコードは非常に実験的意味合いが強いものと考えてください。

Log:
- CCGSubSurf 統合の一部、これは実際には統合のBlenderサイドの物です。

Log:
- いくつかのコンパイラで問題を起こしていたプロトタイプの複製を削除。

---update---
Log:
- DLMルーチンにSubSurfと適合させるために新しい変換コードで更新(Optim、Seams、選択が同じように動作するようになりましたが、これらすべてについて詳しいわけではないため、あまりテストはできません)。

DLM構造体へのこれらの改造はTon氏にとっては不愉快な物だと思います。メモリを浪費しています! 新しい物のすべての情報は、古い構造体を本質的に明示的に(もしくは簡単にそうできるように)保ち、管理するため、非常に細かいものになっています。

ianwill氏
Log:
Scripts (Scriptsディレクトリへのいくつかの変更):
- bpydata/ を scripts/bpydata/ に移動、config/ サブディレクトリをそこに追加。
- Pythonモジュールのために scripts/bpymodules を新設(また、ファイルにアペンドされていた "mod_" を削除)
- スクリプトをこれに応じて更新。

もしあなたが .blender/Scripts/ ディレクトリをどこかにおいていれば、この変更は「再インストール」(単にScripts/ディレクトリをあなたの古い物にコピーするだけです)を要求するでしょう。他の点では、いくつかのスクリプトが動作しなくなるでしょう。更新された"Help→System→System Information"スクリプトですべてがちゃんと動作するかチェックできます。
まだ書かれていないインストーラスクリプトがこれらの問題から、特にユーザがディレクトリをディフォルトのScriptsディレクトリに予想されるのと同じ構造にするのを助けるでしょう。よって基本的な機能(モジュールサーチ、設定データの保存、インストーラ、Help Browser、Config Editor)も、ユーザ自身が書いた、もしくはダウンロードされたスクリプトのコレクション用に利用可能になっています。

BPython:
- slikdigit氏のクラッシュは氏が/.blender/ を置いていないのが原因です。
正しいチェックを追加し、また、現在はもしすべてに失敗しても、/release/scripts/ ディレクトリがスクリプト用に検索されます。このすべての登録ディレクトリ関連は少々(インストールに)混乱するため、どんなトラブルでも報告お願いします(私はLinuxでしかテストできません)。

- BPY_interface.c の BPY_menu_do_python のエラー報告を少し変更:そこではglobaldictのポインタをNULLに設定することにも気が付きました。

- bpy_gethome() を EXPP_interface.[ch] に移動。
- "//" をユーザ定義のPythonディレクトリとするのを、スクリプトを見ているときは無視するように。何人かのユーザは単なるデフォルトとして使用しており、実際にはScriptsディレクトリとしての意味がないと考えられるからです。

ton氏
Log:
更なる Transform Widget関連:

 -- Translate(Grab)/Scaling(Size) widget を使用している際の「ゴースト」化
 -- Rotate Widget 使用中に角度を示す「パイチャート」ゴーストを追加。
 -- ユーザメニュー(InfoWindow)の "View & Control" に Widget 用の設定を追加。
 -- Size(サイズ):Widget全体のサイズをウィンドウサイズのパーセンテージに。
 -- Handle(ハンドル):Widgetの半径のパーセンテージに。
 -- Hotspot(判定領域): ハンドルのクリック用、ピクセル数。
 -- Fixed Size: Widgetのサイズをウィンドウサイズとは独立するようにするオプション。
これらのすべてが便利かどうかはわかりませんが、この段階ではいいテストになります。

また、新しいTransfromを使用するための#defineを、デフォルトでTRUEに設定しました。

Log:
Transform:

- Transform Widgetのハンドルを選択するよりクリーンなコード。ORTHOビューでの選択は中心のハンドルがデフォルトで、垂直のハンドルによる、無限大によるオーバーフローを防ぎます。[Shift]を押しっぱなしで反対に動作します!

- 特殊キー([Ctrl]、[Shift])を離したときの再描画を削除。これはグリッドへの適用をより確実にします(すべてのBlenderリリースでの機能はこの方法です)。

theeth氏
Log:
Shrink/Fatten の挙動を変更。今回がいい機会であることを願います。

技術的には、3Dでのマウスの動きにより(単にTranslation/Grabのように)ビューの軸と垂直な面に投影し、ベクトルの長さを Shrink/Fatten の要素として使用することで動作します。もしモーションが(スクリーン上で)下方向ならShrink、上方向ならFattenです。

平易な言葉でいえば、上移動でFatten、下移動でShrink、そしてGrabのように、ビューポートのズームに対応しています。

私はグリッドへのスナップの値をTranslationとマッチさせました。よって本当にGrabのようになりました。

ton氏
Log:
BIF_setSingleAxisConstraint()関数にヘッダに表示するための文字列を追加。
Martinが表示関連の更なる作業に必要だからです。

theeth氏
Log:
initConstraint を作成。これは基本的に単に CON_APPLY が設定されているか(例えばBIF_setConstraint によって)をチェックするだけです。これはTransform開始時に startConstraint が初期化されたデータを使用するため、完了していなければならず、そのためそのあとに呼ぶ必要があります。
また、いくつかの strcpy を strncpy に変更しました。

Log:
Rotateで0除算エラーが起こる可能性があるのを修正。

二つの軸が正確に重なるもしくは非常に近い場合の中マウスボタンの挙動を修正。現在はデフォルトがこのようになります:X、Y、Z(もしXとYが同じぐらい近ければ、Xを選択することを意味します)。さらにこれを修正できる可能性がありました。

Log:
kaito氏のために、Sizeの反転。ポインタをポインタのもう一方側(水平方向)に見えるように移動。(サイズメンバ、そして単にObjectの位置とEditModeに影響があります)

ton氏
Log:
Transform Widgetの更新。

- グローバル/ローカル/Normal軸のサポート。
- 中心のスイッチ上で左クリックすることにより軸のモードが変わります。
- ObjectModeでは、一つのObjectが選択されている場合、(現在は)ローカルのみが表示されます。
- EditModeでは、Faceを選択することによりNormal軸が選択できるようになります。
- Normalが見つからない場合、ローカル軸が表示されます。

現在、テスト用にMesh EditMode と PoseMode に実装されています。

PoseMode での注意:'Translation Widget' が "IK" Bone 上に表示されますが、移動はできず、その代わりに回転します。非常に興味深い Translate Widgetの使用です…少なくとも混乱する表示だと思います。

Mattへの注意:私は軸の切り替えに中マウスボタンを試してみました…単に奇妙な結果になりました…クリックすると、リピートしてしまい、マウスホイールもあまりよくなかったです。




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

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