OBJファイル読み込み

問題

  1. 以下のようなデータを読み込んで出力するPythonスクリプトを作成してください。
    (入力)
    f 1/1/1 2/2/2 4/4/3
    f 3/3/5 4/4/6 6/6/7 5/5/8
    
    (出力)
    一行目がフェースの頂点番号のリスト、 二行目がエッジのリストです。
    [[0, 1, 3], [2, 3, 5, 4]]
    [[0, 1], [1, 3], [3, 0], [2, 3], [3, 5], [5, 4], [4, 2]]
    
  2. 以下のデータを読み込んで出力するPythonスクリプトを作成してください。
    (入力)
    OBJデータ をファイルに保存して、実行時にそのファイル名で読み込めるようにしてください。
    (実行方法)
    # mayapy スクリプト名.py データファイル名
    (出力)
    [[-0.500000, -0.500000, 0.500000], [0.500000, -0.500000, 0.500000], [-0.500000, 0.500000, 0.500000], [0.500000, 0.500000, 0.500000], [-0.500000, 0.500000, -0.500000], [0.500000, 0.500000, -0.500000], [-0.500000, -0.500000, -0.500000], [0.500000, -0.500000, -0.500000]]
    [[0.000000, 0.000000, 1.000000], [0.000000, 0.000000, 1.000000], [0.000000, 0.000000, 1.000000], [0.000000, 0.000000, 1.000000], [0.000000, 1.000000, 0.000000], [0.000000, 1.000000, 0.000000], [0.000000, 1.000000, 0.000000], [0.000000, 1.000000, 0.000000], [0.000000, 0.000000, -1.000000], [0.000000, 0.000000, -1.000000], [0.000000, 0.000000, -1.000000], [0.000000, 0.000000, -1.000000], [0.000000, -1.000000, 0.000000], [0.000000, -1.000000, 0.000000], [0.000000, -1.000000, 0.000000], [0.000000, -1.000000, 0.000000], [1.000000, 0.000000, 0.000000], [1.000000, 0.000000, 0.000000], [1.000000, 0.000000, 0.000000], [1.000000, 0.000000, 0.000000], [-1.000000, 0.000000, 0.000000], [-1.000000, 0.000000, 0.000000], [-1.000000, 0.000000, 0.000000], [-1.000000, 0.000000, 0.000000]]
    [[0.375000, 0.000000], [0.625000, 0.000000], [0.375000, 0.250000], [0.625000, 0.250000], [0.375000, 0.500000], [0.625000, 0.500000], [0.375000, 0.750000], [0.625000, 0.750000], [0.375000, 1.000000], [0.625000, 1.000000], [0.875000, 0.000000], [0.875000, 0.250000], [0.125000, 0.000000], [0.125000, 0.250000]]
    [[0, 1, 3, 2], [2, 3, 5, 4], [4, 5, 7, 6], [6, 7, 1, 0], [1, 7, 5, 3], [6, 0, 2, 4]]
    [[0, 1], [1, 3], [3, 2], [2, 0], [2, 3], [3, 5], [5, 4], [4, 2], [4, 5], [5, 7], [7, 6], [6, 4], [6, 7], [7, 1], [1, 0], [0, 6], [1, 7], [7, 5], [5, 3], [3, 1], [6, 0], [0, 2], [2, 4], [4, 6]]
    

サンプルスクリプト

Obj ファイルフォーマット

#
# から行末までコメントです。
mtllib マテリアルファイル名
マテリアルデータを記述したファイル名です。
g グループ名
グループの名前です。
次のg、またはファイル末尾までが1つのグループです。
グループ名が無いと、全体が一つのグループになります。
usemtl マテリアル名
このグループが使用するマテリアル名を指定します。
マテリアル名は、マテリアルファイルに記述してあります。
v X Y Z
頂点の座標値です。
vt U V
テクスチャの座標値です。
vn X Y Z
法線ベクトルの値です。
f 頂点座標値番号/テクスチャ座標値番号/頂点法線ベクトル番号 ...
フェイスの情報です。
3つの数値が / を区切りとして並びます。 この3つの数値が、フェイスの数だけ並びます。
各番号は、1 から始まります。
テクスチャ座標値番号頂点法線ベクトル番号は、省略可能です。

Contents