Re: pythonスクリプトを使ったBlenderのlink方法

投稿ツリー


このトピックの投稿一覧へ

通常 Re: pythonスクリプトを使ったBlenderのlink方法

msg# 1.1
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2006/11/17 9:49
yamyam  管理人 居住地: そうや、うちはおおさかやー  投稿数: 4405
はじめましてumiharaさん。
スクリプト拝見しました。
先に結論をいいますと、残念ながら Blender はスクリプトから Join Mesh(別々の Mesh Object の統合)や、Remove Doubles(重複している頂点の統合)機能を使用できません。よって、変換時に少し工夫してあげる必要があります。

以下は元データがないため想像です。実際とは違う部分があるかもしれません。

元データは、それぞれの面を分解した、6面×4個の[x,y,z]の頂点リストと思われます。でも48個もパラメータがあるのは、恐らく両面を定義しているからだと思います。Blender では片面しか定義はないため、umiharaさんのソースでは、coords4〜6はいらないと思われます。
よって、
#Make lists of parameters
    coords = [ x0,x1,x2,x3,x4,x5,x6,x7,
               x8,x9,x10,x11,x12,x13,x14,x15,
               x16,x17,x18,x19,x20,x21,x22,x23 ]
    faces  = [ [ 4, 5, 7,6],[4,5,3,2],
               [ 8, 9,11,10],[12,13,15,14],
               [17,16,18,19],[18,20,21,19] ]

#Make a mesh!
    me = Mesh.New('myMesh')

    me.verts.extend(coords)
    me.faces.extend(faces)
で、とりあえず3つの部分に分かれた1つの Mesh Object になると思います。ただし、この段階でもやはり出力後にEditMode に入って全選択([A])→Rem Doubles([W]キーメニュー)しなければなりません。

最初に重なっている頂点がひとつにまとまっているようにするには、元データで、上記の24個の引数の中で、重複している部分を faces の中で一方だけの指定にしてあげればいいのです。

例えばx2とx8が同じ値であれば、8としているしている部分をすべて2におきかえます([8,9,11,10]→[2,9,11,10]のように)。少なくとも上記のコードでは、すでにx0、x1、x22、x23は使用されていません。

こうして8個のインデックスのみにしてしまえば完了です。ただし、面の方向まで考えるともうひと工夫しなければなりません。具体的には、各面の頂点のインデックスを逆時計回りに配置しなければなりません。

ちなみに、元データは直方体だけなのでしょうか? 任意の形状を示すには、Vertex(頂点)の座標だけでなく、それを構成する Face(面)のためのインデックスもデータとして必要になります。
投票数:25 平均点:1.60

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki