Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
293031    
<< December 2019 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
ブログパーツ-BLOG PARTS.
Profile
Links
Recommend
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2015.08.15 Saturday
MacOSX10.10.4(Yosemite )Xcode7bataでFBX SDK Mac FBX SDK 2015.1 Clang (tgz)でやってみた。002 C++で成功
MacOSX10.10.4(Yosemite )Xcode7bataでFBX SDK Mac FBX SDK 2015.1 Clang (tgz)でやってみた。002
http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775847
にある中の
FBX SDK Mac     FBX SDK 2015.1 Clang (tgz - 113574Kb)

tgzを解凍するとpkgで


インストーラーが走る。

/Applications/Autodesk/FBX SDK/2015.1/samples/



こんだけサンプル入ってる。
 

whaisonMacBookAir-2:~ whaison$ cd /Applications/Autodesk/FBX¥ SDK/2015.1/samples
 

whaisonMacBookAir-2:samples whaison$ ls

Animation        ExportScene05        ProceduralTexture

Camera            ExportShader        StereoCamera

Common            FileStream        SwitchBinding

ConvertScene        ImportScene        Transformations

ExportDocument        Instances        UVSample

ExportScene01        Layers            UserProperties

ExportScene02        MyOwnWriterReader    ViewScene

ExportScene03        Normals

ExportScene04        Pivot

つかってみよう!

のまえに
FBX SDKのフォルダのスペースはバグる原因なので
FBXSDKに変更しちゃいました。

せってい




こうなるように+を押してAddOther押して。
/Applications/Autodesk/FBXSDK/2015.1/lib/clang/libstdcpp/release
libfbxsdk.a
libfbxsdk.dylib
追加する

これね。
これ参考に

Screenshot_2014-12-27_16_00_03.png




こうなるように
ヘッダー
/Applications/Autodesk/FBXSDK/2015.1/include/
ライブラリパスを設定します。
/Applications/Autodesk/FBXSDK/2015.1/lib/clang/libstdcpp/debug/
/Applications/Autodesk/FBXSDK/2015.1/lib/clang/libstdcpp/release/

//

//  main.cpp

//  fbxsdkViewer002cpp

//

//  Created by whaison on 2015/08/15.

//  Copyright © 2015 whaison. All rights reserved.

//

#include <iostream>

#include <fbxsdk.h>

int main(int argc, const char * argv[]) {

    // insert code here...

    std::cout << "Hello, World!¥n";

    return 0;

}


これでビルドサクセス!しました。

ここにあげといた。
http://www.mediafire.com/download/v3lz2o12jo81d6d/fbxsdkViewer002cpp.zip



 
| whaison | FBX_SDK | 20:19 | comments(0) | - | pookmark |
            
2015.08.15 Saturday
MacOSX10.10.4(Yosemite )でFBX SDK Mac FBX SDK 2015.1 Clang (tgz)で失敗
http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775847
にある中の
FBX SDK Mac     FBX SDK 2015.1 Clang (tgz - 113574Kb)

tgzを解凍するとpkgで


インストーラーが走る。

/Applications/Autodesk/FBX SDK/2015.1/samples/



こんだけサンプル入ってる。
 

whaisonMacBookAir-2:~ whaison$ cd /Applications/Autodesk/FBX¥ SDK/2015.1/samples
 

whaisonMacBookAir-2:samples whaison$ ls

Animation        ExportScene05        ProceduralTexture

Camera            ExportShader        StereoCamera

Common            FileStream        SwitchBinding

ConvertScene        ImportScene        Transformations

ExportDocument        Instances        UVSample

ExportScene01        Layers            UserProperties

ExportScene02        MyOwnWriterReader    ViewScene

ExportScene03        Normals

ExportScene04        Pivot

つかってみよう!

せってい



ALL >Buildsettings >Target *fbxsdkViewer

はじめに以下のようにしてBuildsettingsの Header Search Pathsに 
/Applications/Autodesk/FBX¥ SDK/2015.1/lib 
/Applications/Autodesk/FBX SDK/2015.1/lib/clang/libstdcpp

と設定します。

これでopencvのヘッダーファイルを読み込む際に設定したパスから入力すればよくなります。 

次に、ライブラリのパスを設定します。 

Build PhasesにあるLink Binary With Librariesに/opt/local/libにある 

を加えます。「+」を押したあとに



+

Add Other
右に
libfbxsdk.dylib
って検索します。


/Applications/Autodesk/FBX¥ SDK/2015.1/lib/clang/release 
/Applications/Autodesk/FBX¥ SDK/2015.1/lib/clang/debug 
/Applications/Autodesk/FBX¥ SDK/2015.1/lib/clang/libstdcpp/release 
/Applications/Autodesk/FBX¥ SDK/2015.1/lib/clang/libstdcpp/debug 

いくつかあるけど。

/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/arch/fbxtypes.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/arch/fbxdebug.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxarray.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxarray.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxbitset.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxdynamicarray.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxfile.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxfolder.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxhashmap.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxpair.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxintrusivelist.h
/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/fbxsdk/core/base/fbxtime.h

/works/FBX_SDK/fbxsdkViewer/fbxsdkViewer/fbxsdkViewer/SceneContext.cxx


いろいろ検索置換しまくって"fbxsdk.h"になるようにした。

でさいごにこのエラー

ld: library not found for -lGLEW64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

google先生に聞いてみたところ、このエラーが出るのは必要なframeworkが入っていないケースがまずあるという。

その場合は、「TARGET」→「Build Phase」→「Link Binary With Libraries」から、必要なライブラリを足してあげる事で解決する。


とかいってるけど

Ld /Users/whaison/Library/Developer/Xcode/DerivedData/fbxsdkViewer-gwgbsctfwjwnsocvxycvfsbuthig/Build/Products/Debug/fbxsdkViewer normal x86_64

    cd /works/FBX_SDK/fbxsdkViewer/fbxsdkViewer

    export MACOSX_DEPLOYMENT_TARGET=10.10

    /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -L/Users/whaison/Library/Developer/Xcode/DerivedData/fbxsdkViewer-gwgbsctfwjwnsocvxycvfsbuthig/Build/Products/Debug -F/Users/whaison/Library/Developer/Xcode/DerivedData/fbxsdkViewer-gwgbsctfwjwnsocvxycvfsbuthig/Build/Products/Debug -filelist

/Users/whaison/Library/Developer/Xcode/DerivedData/fbxsdkViewer-gwgbsctfwjwnsocvxycvfsbuthig/Build/Intermediates/fbxsdkViewer.build/Debug/fbxsdkViewer.build/Objects-normal/x86_64/fbxsdkViewer.LinkFileList -mmacosx-version-min=10.10 -stdlib=libc++ -lGLEW64 -lGLEW32 -Xlinker -dependency_info -Xlinker /Users/whaison/Library/Developer/Xcode/DerivedData/fbxsdkViewer-gwgbsctfwjwnsocvxycvfsbuthig/Build/Intermediates/fbxsdkViewer.build/Debug/fbxsdkViewer.build/Objects-normal/x86_64/fbxsdkViewer_dependency_info.dat -o /Users/whaison/Library/Developer/Xcode/DerivedData/fbxsdkViewer-gwgbsctfwjwnsocvxycvfsbuthig/Build/Products/Debug/fbxsdkViewer

ld: library not found for -lGLEW64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

| whaison | FBX_SDK | 16:15 | comments(0) | - | pookmark |
            
2015.07.15 Wednesday
OpenGL+FBXSDK( IOS)で表示するUnityちゃん

URL
http://ramemiso.hateblo.jp/entry/2014/06/21/150405

URLをさんこうに
 

FBX SDK

モデルとアニメーションはFBXのバイナリフォーマットなのでそのままでは歯が立ちません。
Autodeskから公開されているFBX SDKを使用して解析することにします。

Autodesk - Autodesk FBX - FBX Software Development Kit

Macで使いやすいフォーマットに変換してからiOSで使用する予定でしたが、
iOS用のライブラリもあったのでこれを使ってそのままのFBXファイルから表示してみます。
FBX SDK 2015.1 iOS

パフォーマンスを気にしないならFBX SDKはモーションの計算もやってくれるので便利です。

 

インストールしてみましたがios-armv7用とios-i386用でライブラリファイルが別々にされていました。
このままでは使いにくいのでユニバーサル化しておきます。

/Applications/Autodesk/FBX SDK/2015.1/libへ移動

lipo -create ./ios-armv7/release/libfbxsdk.a ./ios-i386/release/libfbxsdk.a -output libfbxsdk.a

※64bitのiPhoneシミュレータ用のライブラリは含まれていなかったのでXcodeで64bit版のシミュレータを選択しているとリンクエラーになります。

シーンの読み込み

FBX SDKのサンプルやリファレンスを読みながら解析を進めます。

FbxManager SDKのメモリ管理
FbxImporter FBXを解析してFbxSceneに展開
FbxScene ノードやメッシュ、マテリアル情報を含んだいわゆるシーン

FbxManagerはメモリ管理をやってくれるようでFbxImporterやFbxSceneを作る際に必要になります。今後の作業で何か開放し忘れたものがあってもFbxManagerのDestoroy()さえ呼んでおけば大丈夫なようです。

FbxImporterでFBXを解析し、FbxSceneに展開します。

  this->sdkManager = FbxManager::Create();
  
  auto ios = FbxIOSettings::Create(this->sdkManager, IOSROOT);
  this->sdkManager->SetIOSettings(ios);
  
  auto importer = FbxImporter::Create(this->sdkManager, "");
  
  if (!importer->Initialize(filepath, -1, this->sdkManager->GetIOSettings()))
  {
    return false;
  }
  
  this->fbxScene = FbxScene::Create(this->sdkManager, "originalScene");
  importer->Import(this->fbxScene);
  importer->Destroy();

メッシュ解析:ポリゴンバーテックス、コントロールポイントと法線

いきなり謎なFBX用語が出てきて混乱しますが一般的な表現だとこんな感じです。

FBX用語 一般的な3Dの用語
ポリゴンバーテックス 頂点インデックス
コントロールポイント 位置、ポジション

とりあえずこれらのデータがあればモデルの形は描画できます。

FbxSceneからFbxMeshを取得しこれらの情報を集めていきます。

 

FBXに含まれるポリゴンは多角形の可能性があるのであらかじめFbxGeometryConverterでシーンに含まれるポリゴンを扱いやすい三角形化しておきます。
実際ユニティちゃんも四角形ポリゴンが使われています。

FbxSceneからFbxMeshを取得するには以下のテンプレート関数を使用します。
fbxScene->GetMemberCount();
fbxScene->GetMember(meshIndex);

顔、肌、服、髪・・・という風に一つのモデルも複数のメッシュから構成されています。

  // あらかじめポリゴンを全て三角形化しておく
  FbxGeometryConverter geometryConverter(this->sdkManager);
  geometryConverter.Triangulate(this->fbxScene, true);

  // シーンに含まれるメッシュの解析
  auto meshCount = this->fbxScene->GetMemberCount<FbxMesh>();
  this->meshList.reserve(meshCount);
  printf("meshCount: %d¥n", meshCount);
  for (int i = 0; i < meshCount; ++i)
  {
    auto fbxMesh = this->fbxScene->GetMember<FbxMesh>(i);
    this->meshList.push_back(this->ParseMesh(fbxMesh));
  }

それぞれのメッシュから必要なデータを集めます。

ポリゴンバーテックス(頂点インデックス)の取得

std::vector<int> GetIndexList(FbxMesh* mesh)
{
  // あらかじめ三角形化してある
  auto polygonCount = mesh->GetPolygonCount();
  
  std::vector<int> indexList;
  indexList.reserve(polygonCount * 3);
  
  for (int i = 0; i < polygonCount; ++i)
  {
    indexList.push_back(mesh->GetPolygonVertex(i, 0));
    indexList.push_back(mesh->GetPolygonVertex(i, 1));
    indexList.push_back(mesh->GetPolygonVertex(i, 2));
  }
  
  return indexList;
}

取得した頂点インデックスを使用してコントロールポイント(ポジション)の展開

std::vector<GLKVector3> GetPositionList(FbxMesh* mesh, const std::vector<int>& indexList)
{
  // コントロールポイントがいわゆる位置座標
  std::vector<GLKVector3> positionList;
  positionList.reserve(indexList.size());
  
  for (auto index : indexList)
  {
    auto controlPoint = mesh->GetControlPointAt(index);
    
    positionList.push_back(GLKVector3Make(controlPoint[0], controlPoint[1], controlPoint[2]));
    
    // wは0.0のみ対応
    assert(controlPoint[3] == 0.0);
  }
  
  return positionList;
}

法線はコントロールポイント、もしくはポリゴンバーテックスでマッピングされます。
法線の数と位置の数は一致しないためこんなめんどくさいことになっています。
この後のUVやボーンウェイトなんかも同じです。

std::vector<GLKVector3> GetNormalList(FbxMesh* mesh, const std::vector<int>& indexList)
{
  auto elementCount = mesh->GetElementNormalCount();
  
  // 法線要素が1のみ対応
  assert(elementCount == 1);
  
  auto element = mesh->GetElementNormal();
  auto mappingMode = element->GetMappingMode();
  auto referenceMode = element->GetReferenceMode();
  const auto& indexArray = element->GetIndexArray();
  const auto& directArray = element->GetDirectArray();
  
  // eDirctかeIndexDirectのみ対応
  assert((referenceMode == FbxGeometryElement::eDirect) || (referenceMode == FbxGeometryElement::eIndexToDirect));
  
  std::vector<GLKVector3> normalList;
  normalList.reserve(indexList.size());
  
  if (mappingMode == FbxGeometryElement::eByControlPoint)
  {
    // コントロールポイントでマッピング
    for (auto index : indexList)
    {
      auto normalIndex = (referenceMode == FbxGeometryElement::eDirect)
      ? index
      : indexArray.GetAt(index);
      auto normal = directArray.GetAt(normalIndex);
      normalList.push_back(GLKVector3Make(normal[0], normal[1], normal[2]));
      
      // wは1.0のみ対応
      assert(normal[3] == 1.0);
    }
  }
  else if (mappingMode == FbxGeometryElement::eByPolygonVertex)
  {
    // ポリゴンバーテックス(インデックス)でマッピング
    auto indexByPolygonVertex = 0;
    auto polygonCount = mesh->GetPolygonCount();
    for (int i = 0; i < polygonCount; ++i)
    {
      auto polygonSize = mesh->GetPolygonSize(i);
      
      for (int j = 0; j < polygonSize; ++j)
      {
        auto normalIndex = (referenceMode == FbxGeometryElement::eDirect)
        ? indexByPolygonVertex
        : indexArray.GetAt(indexByPolygonVertex);
        auto normal = directArray.GetAt(normalIndex);
        
        normalList.push_back(GLKVector3Make(normal[0], normal[1], normal[2]));
        
        // wは1.0のみ対応
        assert(normal[3] == 1.0);
        
        ++indexByPolygonVertex;
      }
      
    }
  }
  else
  {
    // それ以外のマッピングモードには対応しない
    assert(false);
  }
  
  return normalList;
}

これだけあればこんな感じにモデルの形を確認できます。
メガネっぽい部分は後でテクスチャと合成してほっぺのチークになります。
f:id:ramemiso:20140621135324p:plain

メッシュ解析:UV

法線と同じようにUVも取得します。
マルチテクスチャ用にUVが複数仕込まれている場合もありますが今回は0番だけ使用します。

実際ユニティちゃんは目の部分にUV1も設定されていましたが使われていない?様なので無視します。

std::vector<GLKVector2> GetUVList(FbxMesh* mesh, const std::vector<int>& indexList, int uvNo)
{
  std::vector<GLKVector2> uvList;
  
  auto elementCount = mesh->GetElementUVCount();
  if (uvNo + 1 > elementCount)
  {
    return uvList;
  }
  
  auto element = mesh->GetElementUV(uvNo);
  auto mappingMode = element->GetMappingMode();
  auto referenceMode = element->GetReferenceMode();
  const auto& indexArray = element->GetIndexArray();
  const auto& directArray = element->GetDirectArray();
  
  // eDirctかeIndexDirectのみ対応
  assert((referenceMode == FbxGeometryElement::eDirect) || (referenceMode == FbxGeometryElement::eIndexToDirect));
  
  uvList.reserve(indexList.size());
  
  if (mappingMode == FbxGeometryElement::eByControlPoint)
  {
    // コントロールポイントでマッピング
    for (auto index : indexList)
    {
      auto uvIndex = (referenceMode == FbxGeometryElement::eDirect)
      ? index
      : indexArray.GetAt(index);
      auto uv = directArray.GetAt(uvIndex);
      uvList.push_back(GLKVector2Make(uv[0], uv[1]));
    }
  }
  else if (mappingMode == FbxGeometryElement::eByPolygonVertex)
  {
    // ポリゴンバーテックス(インデックス)でマッピング
    auto indexByPolygonVertex = 0;
    auto polygonCount = mesh->GetPolygonCount();
    for (int i = 0; i < polygonCount; ++i)
    {
      auto polygonSize = mesh->GetPolygonSize(i);
      
      for (int j = 0; j < polygonSize; ++j)
      {
        auto uvIndex = (referenceMode == FbxGeometryElement::eDirect)
        ? indexByPolygonVertex
        : indexArray.GetAt(indexByPolygonVertex);
        auto uv = directArray.GetAt(uvIndex);
        
        uvList.push_back(GLKVector2Make(uv[0], uv[1]));
        
        ++indexByPolygonVertex;
      }
      
    }
  }
  else
  {
    // それ以外のマッピングモードには対応しない
    assert(false);
  }
  
  return uvList;
}

f:id:ramemiso:20140621140040p:plain

マテリアル解析

FbxMeshと同じくFbxMaterialもシーンに複数含まれています。
fbxScene->GetMaterialCount();
fbxScene->GetMaterial(materialIndex);
FbxSceneのこれらの関数で全て取得します。

  // シーンに含まれるマテリアルの解析
  auto materialCount = this->fbxScene->GetMaterialCount();
  this->materialList.reserve(materialCount);
  printf("materialCount: %d¥n", materialCount);
  for (int i = 0; i < materialCount; ++i)
  {
    auto fbxMaterial = this->fbxScene->GetMaterial(i);
    auto modelMaterial = this->ParseMaterial(fbxMaterial);
    this->materialList.push_back(modelMaterial);
    this->materialIdDictionary.insert({modelMaterial.materialName, i});
  }

それぞれのマテリアルから使用しているテクスチャ名を取得します。
ユニティちゃんのマテリアルはCGFXで書かれていますがOpenGL ES 3.0では使えないのでテクスチャ名だけ取得することにします。シェーダーは後でGLSLで実装します。

絶対パスで保存されているらしく作業者のDドライブの構成が見えちゃったりしてますが無視します。必要なのは*.tgaのファイル名部分だけです。

ModelMaterial FBXLoader::ParseMaterial(FbxSurfaceMaterial* material)
{
  ModelMaterial modelMaterial;
  modelMaterial.materialName = material->GetName();
  
  printf(">> material: %s¥n", modelMaterial.materialName.c_str());
  
  // CGFXのみ対応
  auto implementation = GetImplementation(material, FBXSDK_IMPLEMENTATION_CGFX);
  assert(implementation != nullptr);
  
  auto rootTable = implementation->GetRootTable();
  auto entryCount = rootTable->GetEntryCount();
  
  for (int i = 0; i < entryCount; ++i)
  {
    auto entry = rootTable->GetEntry(i);
    
    auto fbxProperty = material->FindPropertyHierarchical(entry.GetSource());
    if (!fbxProperty.IsValid())
    {
      fbxProperty = material->RootProperty.FindHierarchical(entry.GetSource());
    }
    
    auto textureCount = fbxProperty.GetSrcObjectCount<FbxTexture>();
    if (textureCount > 0)
    {
      std::string src = entry.GetSource();
      
      for (int j = 0; j < fbxProperty.GetSrcObjectCount<FbxFileTexture>(); ++j)
      {
        auto tex = fbxProperty.GetSrcObject<FbxFileTexture>(j);
        std::string texName = tex->GetFileName();
        texName = texName.substr(texName.find_last_of('/') + 1);
        
        if (src == "Maya|DiffuseTexture")
        {
          modelMaterial.diffuseTextureName = texName;
        }
        else if (src == "Maya|NormalTexture")
        {
          modelMaterial.normalTextureName = texName;
        }
        else if (src == "Maya|SpecularTexture")
        {
          modelMaterial.specularTextureName = texName;
        }
        else if (src == "Maya|FalloffTexture")
        {
          modelMaterial.falloffTextureName = texName;
        }
        else if (src == "Maya|ReflectionMapTexture")
        {
          modelMaterial.reflectionMapTextureName = texName;
        }
      }
    }
  }
  
  printf("diffuseTexture: %s¥n", modelMaterial.diffuseTextureName.c_str());
  printf("normalTexture: %s¥n
			
			



			
| whaison | FBX_SDK | 07:35 | comments(0) | - | pookmark |
            
2015.07.15 Wednesday
maya python バージョン version
【maya】Pythonバージョンの取得【備忘録】
mayaで利用するPythonのバージョンを確認する。

import sys
print (sys.version)

2014で2.7に上がっていたので確認方法。
ちなみに、Helpにも記載されています。

追加:Visual Studio のバージョンもMaya2013でVS2010に上がってるので注意
| whaison | FBX_SDK | 07:07 | comments(0) | - | pookmark |
            
2015.07.15 Wednesday
FBXSDK の 言語の種類

やっぱり全環境共通のpythonかなぁ

http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775847

とおもったけど やってる人いた。
http://blog.prtissimo.com/macfbx/

Autodesk社のFBXのサイトからでデータをダウンロードします。試したバージョンはFBX SDK 2015.1 Clangです。通常のMacのアプリケーションと同様の手順でインストールできます。インストールが終了すると、デフォストの設定では/Applications/Autodesk/FBX SDK/2015.1にFBX SDKがインストールされます。

サンプルコンパイル
まずターミナルを起動し、コンパイルを行うサンプルのディレクトリ(/Applications/Autodesk/FBX SDK/2015.1/samples/)に移動します。いろいろなサンプルが置かれていますが、ここではViewSceneという名前のサンプルをコンパイルしてみます。まず最初に、ViewSceneのディレクトリに移動します。

ViewSceneのディレクトリに移動Shell

$ cd /Applications/Autodesk/FBX SDK/2015.1/samples/ViewScene

次にmakeを実行します。Makefileの中を覗くと、オプションの説明が記載されていますが、とりあえず何も指定しないでmakeしてみます。

$ make
cc -pipe -m32 -DFBXSDK_SHARED -I../../include -c ../Common/Common.cxx -o ../Common/Common.o
:(途中省略)
cc -m32 -o ../../bin/clang/x86/release/ViewScene/ViewScene ../Common/Common.o ./DrawScene.o ./DrawText.o ./GetPosition.o ./SceneCache.o ./SceneContext.o ./GlFunctions.o ./SetCamera.o ./targa.o ./main.o -L../../lib/clang/ub/release -L. -lfbxsdk -lm -lGLEW32 -lc++ -liconv -fexceptions -lz -framework GLUT -framework OpenGL -framework Cocoa -framework SystemConfiguration
ld: warning: directory not found for option '-L../../lib/clang/ub/release'
ld: library not found for -lfbxsdk
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [../../bin/clang/x86/release/ViewScene/ViewScene] Error 1


エラーが出ました。../../lib/clang/ub/releaseディレクトリが存在しないというエラーです。確認してみると確かにありません。その代わり./../lib/clang/releaseは存在するようなのでMakefileを一部書き換えてみます。

EXAMPLE = ViewScene
BINDIR = ../../bin/$(COMPILER)/$(ARCH)/$(VARIANT)/$(EXAMPLE)
OBJDIR = ../../obj/$(COMPILER)/$(ARCH)/$(VARIANT)/$(EXAMPLE)
#LIBDIR = ../../lib/$(COMPILER)/ub/$(VARIANT) オリジナル
# /ubを抜く
LIBDIR = ../../lib/$(COMPILER)/$(VARIANT)
INCDIR = ../../include
COMMONDIR = ../Common

保存したらさらにもっかいコンパイル


$make
cc -m32 -o ../../bin/clang/x86/release/ViewScene/ViewScene ../Common/Common.o ./DrawScene.o ./DrawText.o ./GetPosition.o ./SceneCache.o ./SceneContext.o ./GlFunctions.o ./SetCamera.o ./targa.o ./main.o -L../../lib/clang/release -L. -lfbxsdk -lm -lGLEW32 -lc++ -liconv -fexceptions -lz -framework GLUT -framework OpenGL -framework Cocoa -framework SystemConfiguration
mv *.o ../../obj/clang/x86/release/ViewScene
mv ../Common/*.o ../../obj/clang/x86/release/ViewScene
cp -f humanoid.fbx ../../bin/clang/x86/release/ViewScene
cp -f FBX_ASCII_TEXTURE ../../bin/clang/x86/release/ViewScene
cp -f ../../lib/clang/release/libfbxsdk.dylib ../../bin/clang/x86/release/ViewScene


コンパイルに成功しました。実行ファイルは../../bin/clang/x86/release/ViewSceneに生成されます。

サンプルの実行

ターミナルからViewSceneを実行してみます。

実行Shell

$cd ../../bin/clang/x86/release/ViewScene
$./ViewScene
FBXのデータが表示されました。









参考サイト日本語
c++でpython
http://nullorempry.jimdo.com/2012/11/28/fbx-import/?mobile=1

| whaison | FBX_SDK | 06:10 | comments(0) | - | pookmark |
            
2015.07.14 Tuesday
FBX SDK で できること reference
FBX SDK で できること
fbx sdk reference

http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html

_________おおいので FBX 関連だけ 抜粋。
 
~Fbx6ClassTemplateMap              
~FbxAccumulatorEntry            
~FbxAMatrix

FBX のアニメーションカーブについて
~FbxAnimCurveFilter
~FbxAnimCurveFilterConstantKeyReducer     
~FbxAnimCurveFilterGimbleKiller
~FbxAnimCurveFilterKeyReducer
~FbxAnimCurveFilterKeySync
~FbxAnimCurveFilterMatrixConverter
~FbxAnimCurveFilterResample
~FbxAnimCurveFilterScale
~FbxAnimCurveFilterScaleByCurve
~FbxAnimCurveFilterTSS
~FbxAnimCurveFilterUnroll
~FbxAnimCurveKey
~FbxAnimCurveKey_Impl
~FbxAnimCurveKeyBase
 
~FbxArray                  配列に関して
~FbxAutoPtr
~FbxAutoResetXRefManager
~FbxAxisSystem
~FbxBindingsEntryView
~FbxBindingTableEntry
~FbxBitSet
~FbxBlob
~FbxCharPtrSet
~FbxCloneManager
~FbxColor                  カラー
~FbxConnectionPoint
~FbxConnectionPointFilter
~FbxConstantEntryView
~FbxDataType
~FbxDistance
~FbxDualQuaternion
~FbxDynamicArray
~FbxEmbeddedFilesAccumulator
~FbxEntryView
~FbxEvent
~FbxEventBase
~FbxExternalDocRefListener
~FbxFile                   ファイル
~FbxGate
~FbxHashMap
~FbxHungryAllocator
~FbxImplementationFilter
~FbxIO
~FbxIOFileHeaderInfo
~FbxIOPluginRegistry
レイヤー
に関して
~FbxLayerElementArray
~FbxLayerElementArrayReadLock
~FbxLayerElementBinormal
~FbxLayerElementNormal
~FbxLayerElementPolygonGroup
~FbxLayerElementTangent
~FbxLayerElementUV
~FbxLayerElementVertexColor
~FbxLayerEntryView
 
~FbxListener
~FbxMaterialConverter
~FbxMatrix
~FbxMemoryPool
~FbxMutex
~FbxNameFilter
~FbxNameHandler
~FbxObjectFilter
~FbxObjectsContainer
~FbxOperatorEntryView
~FbxPeripheral
プロパティ
~FbxProperty
~FbxPropertyEntryView
~FbxPropertyEvalState
~FbxPropertyHandle
~FbxPropertyNameCache
~FbxPropertyPage
~FbxQuaternion
読み込み
 Importer
~FbxReader
~FbxReaderCollada
~FbxReaderFbx5
~FbxReaderFbx6
~FbxReaderFbx7

名前の変更
~FbxRenamingStrategy
~FbxRenamingStrategyBase
~FbxRenamingStrategyFbx5
~FbxRenamingStrategyFbx6
~FbxRenamingStrategyFbx7
~FbxRenamingStrategyInterface
~FbxRenamingStrategyNumber
~FbxSceneRenamer
 
~FbxScopedLoadingDirectory
~FbxScopedLoadingFileName
~FbxSemanticEntryView
~FbxSemaphore
~FbxSet
~FbxStatistics
~FbxString
~FbxStringListT
~FbxStringSymbol
~FbxSymbol
~FbxSystemUnit
~FbxTakeInfo
~FbxThread
~FbxUserNotification
~FbxUserNotificationFilteredIterator
~FbxVectorTemplate2
~FbxVectorTemplate3
~FbxVectorTemplate4
~FbxWeightedMapping
FBX書き込み EXPORTER
~FbxWriter
~FbxWriterCollada
~FbxWriterFbx5
~FbxWriterFbx6
~FbxWriterFbx7
~FbxXRefManager

 
| whaison | FBX_SDK | 23:20 | comments(0) | - | pookmark |