問題タブ [blender]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
549 参照

blender - Blender が Python で動作しない

Blender 2.49b と 2.57 で外部スクリプトを実行しようとしています

Python バージョン 2.4、2.6、および 2.7 をインストールしてみました。

コンソール ウィンドウにこのエラーが表示されます。誰が私が行方不明のものの手がかりを持っていますか?

トレースバック (最新の呼び出しが最後): File "", line 1, in File "C:\Program Files\Blender 2.49b.blender\scripts\blended_cities_24hook.py ", line 77, in from random import randint,random,uniform File "C:\Python24\LIB\random.py"、41 行目、from warnings import warn as _warn ファイル "C:\Python24\LIB\warnings.py"、258 行目、simplefilter("ignore", category=OverflowWarning 、追加 = 1) NameError: 名前 'OverflowWarning' が定義されていません

コンピューター情報: オペレーティング システム: Win7 x64。CPU:インテル。

0 投票する
1 に答える
1936 参照

python - ブレンダーの元の座標の抽出(ORCO)

Blender(2.5+)からカスタムフォーマットへのエクスポーター(Python)を作成しました。私が気になるのは、ダウンロードするほとんどのモデルにUVレイヤーが含まれておらず、代わりに自動生成されたテクスチャ座標を使用していることです。

問題は、PythonからBlenderで生成された座標(ORCO)にアクセスするにはどうすればよいですか?

編集-2:サンプルファイル: http ://dl.dropbox.com/u/16317117/orco.blend

デフォルトのシーンに立方体をロードし、そのテクスチャユニットタイプを「Wood」に変更することで作成されます。デフォルトのマッピングはすでにGenerated:Flatです。シーンをレンダリングすると、立方体に適切なUVアンラップがあるかのように、木のテクスチャが正しく適用されていることがわかります。

編集-3:答え。

Yafarayブレンダーエクスポーターのソースで答えを見つけました。君たちありがとう!このスレッドが表示された場合は、返信してください。賞金を授与できます。

生成された座標(ORCO)は、頂点の「正規化された」ローカル座標です。基本的に、オブジェクトのローカルバウンディングボックスが与えられた場合:Orco(v) = 2*(v-center)/size

0 投票する
3 に答える
1191 参照

android - 3d opengl Androidの複雑なオブジェクト

私は、opengl android でいくつかの複雑な 3d オブジェクトを作成するタスクを与えられました。グーグルで調べたところ、Blender を使用して 3D オブジェクトを作成し、Android プロジェクトにインポートされていることがわかりました。

0 投票する
1 に答える
1394 参照

android - テクスチャ/頂点の異なるインデックス配列

Android で地球儀を描画しようとしています。これには OpenGL を使用します。ただし、理解しやすくするために、単純な 3D 立方体を作成することから始めます。Blender を使用して 3D オブジェクト (キューブ) を作成し、ラップを解除してテクスチャ座標 (vt) を取得した後、それを .obj ファイルとしてエクスポートします。問題は、8 つの異なる頂点と 9 つの異なるテクスチャ座標を取得することです。

v 1.000000 -1.000000 -1.000000 V 1.000000
-1.000000 1.000000
V -1.000000 -1.000000 1.000000
V -1.000000 -1.000000 -1.000000 V 1.000000 1.000000 -1.000000 V 0.99999.0000 -10000 -100000000-000000000000-0000000000-0000000000-0000000000-000 1.000000 VT -1.000000 -1.000000 VT -1.000000 0.000000 VT 0.000000 1.000000 VT 1.000000 1.000000 VT 1.000000 0.000000 VT -1.000000 1.000000 VT 1.000000 -1.000000












したがって、頂点の位置に一致するようにテクスチャ座標の位置を再配置することを不可能にする、インデックスの実際のめちゃくちゃなセットアップも取得します。

f 5/1 1/2 4/3
f 5/1 4/3 8/4
f 3/1 7/5 8/6
f 3/1 8/6 4/7
f 2/1 6/5 3/4
f 6/7 7/1 3/2
f 1/1 5/5 2/4
f 5/7 6/1 2/2
f 5/5 8/8 6/1
f 8/1 7/2 6/9
f 1/1 2/2 3/3
f 1/1 3/3 4/4

1つの頂点が頂点とテクスチャ座標の両方で構成されているため、インデックスに1つの配列しか使用できないことがわかりました。そのため、v/vt 配列の 1 つを少し再配置する必要があります。しかし、vt (位置 1) を位置 5 (面の最初の行) に移動すると、インデックス配列全体に移動するためにもう一度移動する必要があるため、できません。

基本的に、これはプログラム「Blender」の問題なのか、それとも適用できる解決策があるのか​​ 疑問に思います。

0 投票する
2 に答える
1942 参照

python - Python Blender math.trunc()

Blender2.49bPythonでmath.truncを使おうとしているiam

しかし、iamはこのエラーを取得します

私も数学をインポートしました

そのオンライン

私もint経由で試してみました

エラーが発生します

TypeError:'float'オブジェクトはサブスクリプトできません

だから私はどのように値を切り捨てるべきですか:(

ありがとうございました

0 投票する
2 に答える
5087 参照

opengl-es - OBJ 形式とフラット シェーディングとスムーズ シェーディング

私は OpenGL ES 1.1 を使用しており、Blender からの OBJ エクスポートを頂点データを含むバイナリ ファイルに変換する作業を行っています。私は実際にはすでに機能するツールを持っていますが、いくつかの変更に取り組んでおり、質問に出くわしました。

スムーズ シェーディングを使用しても、正しい法線 (フェース プレーンに垂直) を使用すると、フェースのフラットな外観が得られるようです。スムーズ シェーディングを有効にして適切な法線を使用すると (単純に Blender でシャープとしてマークされたエッジとエッジ分割モディファイアを適用するだけで)、スムーズなパーツとシャープなエッジの効果を得ることができます。

これでどこに行くかというと、2 つの質問があります。

  1. OBJ ファイルでスムーズ シェーディングまたはフラット シェーディングが示されている「s 1」または「s off」行は、スムーズ シェーディングおよび法線の使用の観点から完全に不要ですか?

  2. 実際に OpenGL で Flat shading に設定すると、法線は完全に無視されますか (または、すべてが面に対して垂直であると見なされます)?

0 投票する
1 に答える
531 参照

camera - Python で Blender Game Engine カメラの出力を操作する

Blender ゲーム エンジンでレゴ nxt ロボットをシミュレートしています。手順の 1 つは、レゴ nxt が持つセンサーをシミュレートすることです。衝突と距離をシミュレートすることができましたが、カラー センサーも必要です。

1 つの方法は、特定のマテリアルまたはプロパティを検索する光線センサーを使用することですが、これは 1 つの色のみに限定されます。

私のアイデアは、視野が非常に狭いカメラを使用して、そこから色を取得することでした。また、ロボットに搭載されたカメラをシミュレートしたい場合にも非常に役立ちます。

ブレンダーカメラの出力を操作する方法を知っている人はいますか?

特定のカメラからフレームを取得して処理する方法が必要です。

0 投票する
1 に答える
312 参照

c# - DynamicObject の TryInvokeMember オーバーライドによる拡張メソッドの使用

提案や批判にオープンにし、これを読む可能性のある Blender を使用する XNA プログラマーに希望を与えたいので、なぜ私がしていることをしているのかについて少し背景情報を提供する必要があるように感じます。この投稿の長さを考慮して、私の問題の核心を気にしない場合は、最後の段落まで飛ばしてください。

毎回 Blender から新しい .FBX または .OBJ モデルをエクスポートする必要がないように、.blend ファイル ( Blenderで作成) を読み取り、それらを XNA ゲームからロード可能なデータに変換する XNA コンテンツ パイプライン拡張プロジェクトに取り組んでいます。少し調整するだけでなく、(願わくば) Blender の素晴らしいパーティクルと物理演算機能の XNA 互換サポートを作成します。

Blender の内部構造に深く入り込むことなく、.blend ファイルがどのように機能するかについての私の理解を説明したいと思います。あなたがこの件についてより詳しい場合は、私を修正してください。

Blender はファイルをバイトの「ブロック」で保存します。これらのブロックのほとんどには、3D シーンのオブジェクトと設定を表すデータが含まれており、ファイル内の最後のブロック (SDNA ブロックと呼ばれる) には、非常に単純な C スタイルの構造と考えられるものが含まれており、それぞれに一意の識別子があります。 、およびさまざまなタイプのいくつかのフィールド。これらの構造体のフィールドは、 または などの単純な型のint場合floatもあれば、SDNA ブロックで定義された型の場合もあります。

たとえば、IDSDNA 構造の半疑似コード表現は次のとおりです。

ご覧のとおり、フィールド*pointerval、およびは、実行時にまたはval2型の単純な値で表すことができます。ただし、このフィールドは typeであり、ファイルの SDNA ブロックの他の場所で定義されています。void*intgroupListBase

ここで、C# の新しい動的機能が登場しますBlenderObject。SDNA 構造体 (「SDNA 型」) とバイトのチャンクを指定すると、次のいずれかを格納することにより、その構造体のインスタンスとして動作するクラス (と呼ばれる) を作成しました。それ自体の単純型の値、またはBlenderObjectそれぞれが「フィールド」の 1 つを表す他のインスタンスのコレクション。これにより、私のライブラリのユーザーは次のようなコードを書くことができます:

scenerenderDataはどちらも「複雑な」BlenderObjectインスタンス (それぞれが直接の値ではなくフィールドのコレクションを持つ) でありxparts、 とypartsは両方とも「単純な」BlenderObjectインスタンス (それぞれがフィールドのコレクションではなく直接の単純型の値を持つ) です。 )。BlenderObjectSDNA 型がアセンブリで具体的にコンパイルされた型である場合、それぞれが期待どおりに動作します。これは、ダイナミクスを使用して Blender オブジェクトを表現する私の目標です。

私のライブラリの使用を簡素化するために、DynamicObject「単純な」BlenderObjectインスタンスが直接の値として動作するように のメソッドをオーバーロードすることに取り組んでいます。たとえば、直接型の値を 4 としfooます。 で次のことができるようにしたいと考えています。BlenderObjectintfoo

最初の行の意図は、fooの内部値のToStringメソッドを呼び出すfooことです。この反射的なメソッド呼び出しはうまく機能します (また、配列型の直接値のインデクサーに適用される同じ概念も同様です)。ただし、次のようなことを試した場合を除きます。fooTryInvokeMemberInt32.ToString()BlenderObject.ToString()

Barは私のアセンブリで定義された拡張メソッドであるため、fooの値 4 を反映すると、明らかにそれを見つけることができず、もちろん例外がスローされます。最後に、私の質問は次のとおりです。

オブジェクトに適用できる拡張メソッドを見つけてキャッシュするにはどうすればよいですか? リフレクションで拡張メソッドを見つける方法は知ってBlenderObjectますが、動的インスタンスで拡張メソッドが呼び出されるたびにこれを行うと、非常に遅くなります。その質問で説明されている方法以外に、拡張メソッドを見つけるためのより高速な方法はありますか? そうでない場合、拡張メソッドをインターンする方法についてはどうすればよいのでしょうか? 長生きして申し訳ありません。役立つ回答/コメントを事前に感謝します。

編集:

@spender が答えたように、私の問題を解決する簡単な方法は辞書を使用することです (ただし、渡さDictionary<Type, Dictionary<CallInfo, MethodInfo>>れた によって提供される CallInfo を簡単に使用するために を使用しています)。ただし、私の実装により、別の質問が発生しました。InvokeMemberBinderDynamicObject.TryInvokeMember

呼び出し元のアセンブリによって参照されるアセンブリで定義された型を取得するにはどうすればよいですか? たとえば、次のコードを考えてみましょう。このコードが私の Blender ライブラリを参照するプロジェクトにあり、拡張メソッドBaz()がそのプロジェクトによって参照される別のアセンブリで定義されているが、私の Blender パイプラインによっては定義されていない場合、Blender パイプライン内から検索するにはどうすればよいでしょうBaz()か? これは可能ですか?

0 投票する
0 に答える
627 参照

python - 顔のキーポイント (目の間の距離など) に基づいて、人間の顔の 2D/3D モデルを作成できるツール/プログラムはどれですか?

60 の顔キー ポイントに基づいて、既存のモデルを制御するか、ゼロから新規作成する必要があります。つまり、人間の顔の 60 のキー ポジション (フェイス ポイント) があり、このキー ポイントに基づいて新しい顔を描画する必要があります。また、コマンドライン モードで実行する必要があります (Python 言語を推奨)。それを行うためのいくつかのアプローチを知っていますか?

しばらくの間、Blender の python API を使用しようとしましたが、コマンドライン モードで bpy.ops.translate (プロポーショナル ツールを使用したい) などのオペレーターの失敗に関連する問題がいくつかあります。

ありがとう。

0 投票する
2 に答える
686 参照

iphone - iphoneプロジェクトで.blendファイルを使用するには?

プロジェクトで SIO2 などのエンジンのような 3D エンジンを使用したくありません。しかし、私は通常のプロジェクトで.blender 3d ファイルを使いたいと思っています。

どうすればそれを進めることができるか教えてください。

ありがとう