でらうま倶楽部

バカってゆうか、ゲームを作る事しか能の無いプログラマの、面白おかしな日々を綴ってみる実験。

VisualStudio プロジェクトのファイル名をサクッと変える

コード書いとる?

「VisualStudio プロジェクトのファイル名ってどうやって変更するんだ・・・?」
と疑問に思ってもう10年近くになります。

それがあっさり解決したのでメモ。

プロジェクトのファイル名はVisualStudio内で変更する手段がありません。エクスプローラーで変えるとソリューションを開いた時に読み込みエラー・・・

もうどうせいっちゅーねん!

ところが・・・エクスプローラーでプロジェクトのファイル名を変えた後、プロジェクトのファイルを開くと・・・なんという事でしょう。問題ありません(笑)

photo1


photo2


photo3



photo4

VisualStudio終了時に改めてソリューションを保存して完了!

1つのソリューションに複数のプロジェクトが含まれている場合にはこの手が使えませんが、1ソリューション1プロジェクトの場合はこれでいいよね。

ではまた次回!

Windowsアプリでprintfを気軽に使う

コード書いとる?

WindowsでGLFWを使ったアプリを作ろうとするとprintfやstd::coutの出力がどこにもされなくて、VisualStudioのデバッグ出力へバイパスするよう一工夫してました。

ところがひょんなことからprintfやstd::coutを使えつつもReleaseビルドでは封印できる方法を教えてもらったのでシェア!!

GLFWを使ったアプリの場合、main関数から実行が始まるようにしたいです。これをVisualStudioの場合はコンソールアプリケーションの雛形を使って実現。

すると、実行時にはコマンドプロンプトがまず起動し、そっからアプリ画面が開きます。

photo

実はprintfやstd::coutは、この時起動したコマンドプロンプトに対して出力されます。すいません、今まで知りませんでした…

ただこのままアプリ完成!! だとちょっとみっともないので、Releaseビルドの時はコマンドプロンプトが起動しないように細工します。

ソースファイルのどこかに以下のコードを追加。
 
#if !defined (DEBUG)
// Degub版のみコンソールを表示する設定
#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup")
#endif

Releaseビルド時にはリンカーの設定を上書きし、アプリが単体で起動します。メデタシメデタシ!!

ただし、printfやstd::coutの出力が確認できなくなりますけどね。これWindowsで何か方法があるのかしら…

今回の実装はGithubで公開してる簡易ライブラリで試してみたので、暇な人は試してみてください。

ではまた次回!!

org-mode の Agenda View で Deadline を知らせる日数を変更する

org-mode-unicorn-logo
コード書いとる??

org-mode の Agenda View で早めに Deadline の警告を表示して欲しかったのですが、サクッと解決しました。思い立った時に調べるのだいじ。

org-deadline-warning-days の値がその日数なので、これを変えればよろしい。便利!!

ではまた次回!!

org-mode がとっくに MathJax に対応していた件

photo

コード書いとる?

最近資料で数式を扱うことが増えたので MathJax 最高!ってなってます。 ところが人気が高まりすぎたのが、公式から「負荷が増えすぎてウチのサーバーが持たないので、他のサーバーを使ってね!」アナウンスがあって小慌て。

自分には特に影響がなかったんですが、ついでに org-mode の機能を調べてたらまさかの MathJax 対応済み! 前述のアナウンスにもしっかり対応。 orgで特に何も指定しなくてもええ感じに設定その他諸々HTMLに出力されていました。

変数 org-html-mathjax-options で細かな挙動を変更できるし、大変ありがたい。しかもorgファイルごとに設定を変えられる。

#+HTML_MATHJAX: font: STIX-Web

あとorg-modeから出力したHTMLファイルを眺めてたら標準スタイルシートが出力されててあれ?となった。これは orgファイル内で
 
#+OPTIONS html-style:nil

と書けば抑制できるんだとさ。


スッキリ!

jNetHack 3.6.0-0.8 を macOS 10.12.4 でビルドする

photo

コード書いとる?

ちょっと前に jNetHackをOSXでビルドする 記事を投稿していたのですが、気づいたらこの方法ではビルドできなくなっていました・・・

で、何とかビルドは成功するとこまで持っていったのでそのメモ。

これは stdio.h からインクルードされている Availability.h の文字コードが UTF-8 なのが原因です。前回の投稿では、cp932なソースファイルを一旦UTF-8に変換してからビルド、実行ファイル内の文字リテラルはcp932に再変換。というビルドオプションを指定していました。

これだと、文字コードがUTF-8のソースファイルを入力したらおかしくなるに決まってます。ぐぬぬぬ・・・

たどり着いた結論は「ソースファイルとヘッダファイルを事前にUTF-8に変換しておく」です。

以下その手順。
# HomebrewでGCCの最新版をゲット
brew install gcc
# iconvではファイルを上書きできないので、代行するツールをゲット
brew install moreutils

NetHack公式から nethack-360-src.tar をダウンロードして展開
jNetHack公式から jnethack-3.6.0-0.8.diff をダウンロード

# 日本語パッチを当てる
patch -p1 < ../jnethack-3.6.0-0.8.diff

# ソースファイルとヘッダファイルの文字コードをcp932に変換
find . -type f -name '*.c' -o -name '*.h' | xargs -I{} sh -c 'iconv -f cp932 -t UTF-8 {} | sponge {}'

・sys/unix/hints/macosx10.10 を修正
# 最新版のGCCを使うよう指示
CC=gcc-7
#ビルドオプションに付け足し
CFLAGS+= -fexec-charset=CP932

# ビルドスクリプトを生成
sh sys/unix/setup.sh sys/unix/hints/macosx10.10

# ビルド&インストール
make install

# プログラムの標準出力の文字コードをバイパスして変換してくれるプログラム
brew install cocot

# 実行!!
cocot -t UTF-8 -p cp932 -- ~/nethackdir/jnethack

ではまた次回!!

MacBook Pro の画面が白っぽいなと思ったら

コード書いとる?

自分は普段 MacBook Pro (Retina, 13-inchi, Early 2015) を使っております。

で、ちょっと前から画面が白っぽいのが妙に気になり始め、先日それが爆発しましたw

結論として「調整できた」のでメモ書き。


photo1

ColorSyncユーティリティーでプロファイルを開き、Appleディスプレイの製造および装置情報を見ると、末尾が2A。これが巷で「白っぽい!」と噂になっているLG製液晶・・・やったねアタリを引いた!

photo2

まぁ悲観する事でもなく、色味を調整すればよいだけなので、システム環境設定→ディスプレイ→カラー→補正...

photo3

あれ? 詳細設定が無い・・・

ここで慌てず、ディスプレイキャリブレーター・アシスタントを一旦閉じ、今度は option キーを押したまま補正をクリック。

photo4

出てきました! これって macOS Sierra からなの?まあいいや調整できたので・・・

というわけでいい感じに色味(コントラスト)を調整できましたとさ。スクリーンショット撮ってもわかんないけどね(笑)

スッキリ!

ではまた次回。

Emacs25で追加されたlisp構文の警告をscratchバッファでだけオフる

photo

Emacs 25.2 順調です!

順調なのですが・・・ いつの頃からか scratch バッファでこんな色付けが・・・・
 
photo

気になって scratch バッファにメモ書きできない! 今回はこれを何とかした話。

調べてみたら、Emacs 25 から追加されたらしい。一部の人が「ありがたいんだけど・・・ありがたいんだけど・・・」ってなってた。


init.el 編集中とかでコードの書き間違いを警告してくれるのはありがたいんだけど・・・ scratch バッファは主にメモ書きに使っているので、自分的には要らない・・・ということで、どーにかして scratch バッファでだけ警告をオフる方法を探す事30分・・・

みつけた!


init.el を開いてる時は Emacs-lisp モードで scratch バッファは Lisp-Interraction モード。これを使えばうまくいきそうだ!


できました!!
 

スッキリ!!!!

ではまた次回

Emacs 25.2 が登場

photo

コード書いとる?

拙者がコードを書くのに欠かせないテキストエディタ Emacs の新しいバージョン 25.2 が公開されています。

気に入らない箇所は自分で使い勝手を変えられるところと、org-mode の2つがとても気に入って使い続けています。

とくに org-mode は代替が見当たらないので若干困っています。1つのソフトに依存するのはいくない・・・

今回はバグフィックス版らしく、ほとんど変化を感じませんが、GNU Emacs NEWS(C-h n)を見ると若干の機能変更も入っていますね。

いつも使っているビルド用のスクリプトを公開しておくので、
コマンド一発でemacsをビルドしたい人は使ってちょーだい。

また次回!

Cinder0.9.1を使う

18
コード書いとる?

WindowsとmacOSとiOSでいい感じにC++でアプリをかけるフレームワーク Cinder の新しいバージョンが公開されています。

まだ公式なアナウンスはありませんが、Githubからダウンロードできるソースコード一式にはAndroid対応も入ってるっぽい!

ソースコードからのビルド方法(macOS & iOS)

GithubからCinder0.9.1のソースをダウンロード

個別ビルドのためにxcprettyを導入(ビルド中の出力をいい感じに整形してくれるツール)
brew install ruby
gem install xcpretty

boost
最新版のヘッダファイルとライブラリファイルを適切な場所にコピー
glm 最新版をヘッダファイルを適切な場所にコピー

ターミナルで proj/xcode へ移動して osx-build-xcpretty.sh を実行

待つ

公式リファレンスをオフラインで見るには自分でドキュメントをビルドする必要があります。これは docs/readme.md に書いてあります。

OpenGL ES3.0 系のAPIを追加する場合は docs/doxygen/Doxyfile を修正する必要あり。
PREDEFINED             = "CINDER_COCOA" \
                         "CINDER_MSW" \
			 "CINDER_GL_HAS_UNIFORM_BLOCKS" \
			 "CINDER_GL_HAS_DRAW_INSTANCED" \
			 "CINDER_GL_HAS_FBO_MULTISAMPLING" \
			 "CINDER_GL_HAS_TRANSFORM_FEEDBACK" \
                         CINDER_DOXYGEN

以前のバージョンだと commandキーを押すとページトップに勝手に移動してしまう問題があったのだがこれが解決してて嬉しい!macOSで公式リファレンス読んでる時にAPIとかをコピペしようとして「グギギギ・・・」ってなってたんよ・・・

まだ不便なのが、GLMのリファレンスをTOPから直接リンクで辿れない・・・これどうしよう。

ではまた次回!

HTMLで数式を書くにはMathJaxがいいかもしんない

コード書いとる?

自分的に発見があったのでそのメモ書き!

専門学校講師として無事2016年度も終え、悠々自適な日々が始まる・・・と思いきや、なんか色々顔を出しております。ありがたや。
4月8日の『「道具として使う数学」勉強会 #2』も控えてるのでその資料作成もジワジワ進めとるのですが、数学とか物理っていろんな式が出てくるじゃないですかー。分数とか積分とか微分とか!

そんなんHTML書類とかでどうやって書けばいいんじゃぁ!って半ばキレながら資料をまとめてたんですが・・・あれ?ここのサイト、式が画像じゃないぞ??? ってのを見つけました。


41

CSSとか駆使して書いてるのかしらん?? と思いつつおもむろに「ページのソースを表示」

06

そしたら、当該箇所に「MathJax」なる識別子を発見!こ・・・これかも・・・?!

見つけました(笑)


HTMLのヘッダにちょろろっと追記してあとは専用書式に則って式を書くだけじゃないですかー!これは楽だ。

53

こんなんも引用元のサイトだとテキストなんだぜ・・・

テキストだと、拡大表示しても輪郭がギザギザにならないので良い。

書式はLaTeX + amsmathのスタイル・・・(よくわかってない)

ただ・・・テキストをコピペして保存しようとすると、変換前の状態でペーストされますね・・・まぁこれはしゃーない!

スッキリ!

ではまた次回。


GLFWとRetinaと私

コード書いとる?
花粉症でそれどころじゃない人もおるかもね・・・(涙)

OpenGL学習向けにとてもちょうど良い規模のフレームワークGLFW

さてMacBookProに買い替えてちょっと困ったことがありまして。
GLFWがRetina未対応のため、自分で色々実装する必要があったんですな。

WindowサイズやFramebufferサイズからViewportを計算して・・・・
でもこれフルスクリーンの場合どーすんだ? とか、色々悩んでました。

と思ってたらGLFW 3.2.1で暫定的ながら対応してくれてた!

CMakeのビルドオプションに GLFW_USE_RETINA があるじゃないですか!
このオプションを無効にしてビルドしたのでサンプルを動かしたら、思った挙動になってくれてひと段落。

とりあえずRetina対応は保留の方向で! 笑

Githubリポジトリのmasterではこの仕様が廃止されてWindow Hintに GLFW_COCOA_RETINA_FRAMEBUFFER が追加さててるので、次回正式バージョンの時にまた修正が必要ですね。

モヤっと。

ではまた次回!!

文字のラスタライズはfontstashがいいかもしんない

photo

コード書いとる?

macOSとiOSとWindowsで動作するアプリを作るのに重宝してるCinder0.9.0です。

ですが日本語表示が弱くて・・・というか、実行環境ごとにフォントのレンダリング処理を書く実装なので、描画結果が違っちゃうんだよね・・・悩ましい!

ちょっと前まではFreeTypeを使っていたのですがいかんせんライブラリの規模がでかい。と思ってGitHubをウロウロしてたら見つけちゃったよ fontstash

というわけでサンプルを GitHub に上げたので興味のある人は読んでみてください。 ラスタライズとレンダリング処理を分離する良い勉強になりました。

fontstash はC言語で書かれているので久々に見た malloc とか memset とかにドキッとしました。これって・・・恋?!

ではまた次回!

emacsのdiredモードと少し仲良くなる

photo

コード書いとる??

emacsのdiredモードについて少し時間を割いて調べてみたら、さりげなく便利な機能を見つけたのでそのメモ。
  • m     ファイルをマークする(dired-mark リージョン対応)
  • u     ファイルのマークを解除する(dired-unmark リージョン対応)
  • t     マーク状態を反転する(dired-toggle-marks)
  • M-DEL マークを全て解除(dired-unmark-all-files)
  • B     ファイルをバイトコンパイルする(dired-do-byte-compile マーク対応)
  • ^     ひとつ上の階層へ移動
ここ数年、ほとんど動作を確認しないで使っていたので恥ずかしい限り。過去に自作したelispマクロは幾つかお役御免となりました。

dired モードの時に C-h m で詳細なヘルプが出てくるので、それを読めばいいのですが・・・いいのですが・・・!!

すいません言い訳でした!


ではまた次回!

プログラマ向けフォント Ricty 4.1.0 を使う

コード書いとる??

macOSで Ricty 4.1.0 がうまく生成できなかった話の続きです。

こちらの記事を見ながらWindowsで生成しました。

ありがとうございます。バッチリです!!

ではまた次回!

プログラミング用フォント Ricty を更新し・・・失敗

コード書いとる?

ふとサイトに立ち寄ってみたら、プログラミングには欠かせない等幅フォント Ricty が更新されていました。

おー。 Inconsolata 2.0 に対応したのね! というか、Inconsolataの更新に伴った更新とな。

フォントの生成に必要な FontForge は Homebrew 経由でインストール済みなので、いそいそとスクリプトをダウンロードして変換。

で、プレビューしてみてびっくりした!

image


これはアカン・・・慌ててサイト下部の「既知の問題」を読んでみると

macOS で一部の FontForge ビルドを用いるとボールド体の i、j などが不自然に大きくなることがあります。FontForge Open Source Font Editor から最新ビルドをダウンロードし、FontForge.app/Contents/Resources/opt/local/bin/fontforge を用いると解決します。

FontForge公式で配布されている実行ファイルは XQuartz を要求するバージョンなのでそのままでは動きませぬ(T^T)

しばらく様子を見守りましょう。

どんまい!

また次回。

FBX SDK に触れて色々わかってきた事

FBX-Icon

コード書いとる?

まだまだFBXと格闘中です。楽しい!
FBX SDKと格闘すること2週間。いくつかコツのようなものが溜まってきたのでメモがてら書いときます。


文字コード問題
FBX SDKでの文字列の文字コードはUTF-8。公式リファレンス内 "Supported String Formats" にて書かれてます。
これで困るのがWindows。ファイルパスの文字コードがCP932なのでうっかりするとファイルが読み込めない事態に遭遇します。
そこでFBX SDKには文字コード変換用のAPIが用意されているので、それを利用。ありがたい!

// 相対パス(CP932) → 絶対パス(UTF-8)
std::string getUTF8Path(const std::string& path)
{
	// 相対パス → 絶対パス
	char fullPath[_MAX_PATH];
	_fullpath(fullPath, path.c_str(), _MAX_PATH);

	// cp932 → UTF8
	char* path_utf8;
	FbxAnsiToUTF8(fullPath, path_utf8);

	// char* → std::string
	std::string coverted_path(path_utf8);
	// FBX SDK内部で確保されたメモリは専用の関数で解放
	FbxFree(path_utf8);

	return coverted_path;
}


テクスチャのパス
FBX SDKに用意されている FbxPathUtils の関数を使えば、OSごとの差異を吸収してくれて楽だったよ。

FbxFileTexture* texture;   // 初期化済みである事

// フルパスからファイル名を取り出す
//   FbxFileTexture::GetFileName はFBX内に記録されているパス(大抵フルパス)を返却する
FbxString path = FbxPathUtils::GetFileName(texture->GetFileName());


事前処理
シーン内のポリゴンを3角形に分割したり、ノードに含まれるメッシュをマテリアルごとに分割したり、結構事前処理が用意されていてありがたい!
フリー素材から拝借してきたモデルデータに対して「これ3角ポリゴン分割お願い!」ってできないからね〜

FbxScene* scene;     // 初期化済みである事

FbxGeometryConverter geometryConverter(manager);
// TIPS:あらかじめポリゴンを全て三角形化しておく
geometryConverter.Triangulate(scene, true);
geometryConverter.RemoveBadPolygonsFromMeshes(scene);

// TIPS:マテリアルごとにメッシュを分離
geometryConverter.SplitMeshesPerMaterial(scene, true);


メッシュ名
ユニティちゃんのFBXデータで遭遇したのですが、FbxMeshに名前がついていない場合があります。
そん時は親のFbxNodeの名前を拝借するといいかもです(描画時のデータ構造を変更した方が良さそうだ)

FbxScene* scene;     // 初期化済みである事

auto* mesh = scene->GetSrcObject<FbxMesh>(0);
std::string name = mesh->GetName();
if (!name.size())
{
  // FIXME:FbxMeshに名前がついていない場合は親のノードの名前を拝借
  //       1つのノードが複数のメッシュを含む場合に適していない
  name = mesh->GetNode()->GetName();
}


時間管理
アニメーションの時間管理はdouble型で単位は「秒」で扱うと手間が色々省けていいかもです。

FbxTime time;
time.SetSecondDouble(animation_time);

FbxNode* node;     // 初期化済みである事
node->EvaluateGlobalTransform(time);

// 時間を取り出す
double t = time.GetSecondDouble();

こんなところかな。

ではまた次回!!

FBX SDK でモデル描画(ポリゴン編)

FBX-Icon

コード書いとる?

先日から FBX SDK と格闘中。そのメモ書きです(⇒導入編)

このブログを書いとる段階でFBX SDKのバージョンは2017.1。SDK同梱のサンプルコードをモニタに穴が開くかっちゅーくらい、にらめっこしながらテストコードを書きました。

探して見たらオフラインのドキュメントも発見。これでネットに繋がらなくても思う存分格闘できるぜ!

GitHubで公開したので興味のある人は目を通して見でちょ。
 まだまだわからないことが多いですが、まぁ実務で使えるくらいには理解が進んだ感じです。

今回わかったことは、FBX以外の形式も扱えること!
  • Autodesk AutoCAD DXF (.dxf)
  • Collada DAE (.dae)
  • Alias OBJ ( .obj)
すごくね?

FbxSceneからメッシュとかマテリアルを取り出す場合は、FbxNodeを辿らなくても以下のように取り出せる。
 
FbxScene* scene;    // ←適切なデータが格納されている状態である事

// シーンに含まれるメッシュ数
int meshCount = scene->GetSrcObjectCount<FbxMesh>();

for (int i = 0; i < meshCount; ++i)
{
  FbxMesh* mesh = scene->GetSrcObject<FbxMesh>(i);
  // なにがしかの処理 
}

// シーンに含まれるマテリアル数
int materialCount = scene->GetMaterialCount();

for (int i = 0; i < materialCount; ++i)
{
  FbxSurfaceMaterial* material = scene->GetMaterial(i);  
  // なにがしかの処理 
}

楽!!!

FbxMeshから頂点座標以外のデータを取り出す方法もだいぶん簡略化できる!

FbxMesh* mesh;      // ←適切なデータが格納されている状態である事

FbxArray<FbxVector4> normals;
// normalsに、頂点ごとの法線を格納してくれる
mesh->GetPolygonVertexNormals(normals);

// 頂点に格納されている全UVセットを名前で取得
FbxStringList uvsetName;
mesh->GetUVSetNames(uvsetName);

FbxArray<FbxVector2> uvsets;
// uvsetsに、頂点ごとのUVを格納してくれる
mesh->GetPolygonVertexUVs(uvsetName.GetStringAt(0), uvsets);

めっちゃ簡単やん!

マテリアルから値を取得する場合は以下のように書くといいらしい・・・。

FbxSurfaceMaterial* material;    // ←適切なデータが格納されている状態である事

// 引数に欲しい情報を指定して検索する
FbxProperty prop = material->FindProperty(FbxSurfaceMaterial::sAmbient);
if (prop.IsValid())
{
  const auto& color = prop.Get<FbxDouble3>();
  // 何がしかの処理
}

みたいな感じでテストコードを書いたので、参考にするといいよ。

スケルタルアニメーション編に続く・・・(まだ格闘中)


ではまた次回!!!

東ゲ部で数学な勉強会を催してみて


IMG_3011

コード書いとる?

先日コワーキングスペース茅場町Co-Edoにて、勉強会を催しました。
内容は、中学〜高校あたりで習うであろう数学的な知識を抜粋して「こういう局面で使うと便利だよ!」というのを簡単なサンプルを交えてみんなに体感してもらうというものでした。

IMG_3009

勉強会の最後に各自簡単な作品を作ってもらったのですが、これが思った以上に出来が良くて「しまった、本日の進捗としてどこかにアップロードしてもらえたら・・・」というのが今回の反省点です。東ゲ部、もう少し酒と食べ物以外の進捗も増やしていきたいですからね。

IMG_3014

場所を提供していただいたCo-Edoさんは普段の設備使用料(1000円!!)だけで、気軽に勉強会を催せるのがとても魅力!勉強会の後の懇談会も一人2000円程度でいい感じにピザとか頼んでくれます!(ありがとうございました!)

また機会があれば催したいです。

ちょいちょいLive2D勉強会GLSLスクールも催されておりますので、そちらに興味のある方も是非!

年明けにはGlobal Game Jamも催されまっせ!

IMG_3015

さて私はひょんな事から(話せば長くなるので割愛)、今年の5月あたりに東ゲ部入りしたのですが、自主的な集まりなのに、こんな感じに毎月なにがしか催しがあって素敵です。自分も何かしなくちゃ!と背中を押されます。

一見さんお断りではなく一見さんいらっしゃい的な感じも良いですね。部長をはじめとする主要メンバーの配慮の賜物だと思います。ひとりで来てもこわくない!

もし 東ゲ部 に興味を持っている人は、是非もくもく会に参加してみてください。各自Co-Edoに集まってもくもくと作業を進めるだけなのですが、東ゲ部の雰囲気とか方向性とかを感じてもらえると思います。

知識の定着率は講義ではたったの5%なのが人に教えると90%に達するとの研究結果もありますので、東ゲ部で気軽な教え教えられの環境が育っていくのを楽しく見守っていこうと思います。

そろそろ茅場町近辺に引っ越したいのですが、何かいい物件は無いものでしょうか・・・(家賃6万円程度を希望)

ではまた次回!

FBX SDKに触れる

FBX-Icon

コード書いとる?

もういよいよFBXを避けて通れなくなってきたので、エイヤっと導入してみました。

FBX怖くない!

というわけで、導入記メモ。

まずは公式サイトからSDKをダウンロード。ネットで「FBX SDK」とかで検索して出てくるサイトはなぜだか古いので注意。

最新版をゲットするなら公式サイトから! ユーザー登録の必要はありません。たぶん。

FBX SDKの最新版はブログを書いてる時点で2017.1。自分の開発環境に合わせたSDKをダウンロードしましょう。特にVisualStudio版!

そしたら、開発環境にインクルードファイルとライブラリのパスを通したりします。

VisualStudio
・追加のインクルードディレクトリ
C:\Program Files\Autodesk\FBX\FBX SDK\<SDKのバージョン>\include

・追加のライブラリディレクトリ
C:\Program Files\Autodesk\FBX\FBX SDK\<SDKのバージョン>\lib\vs2015\$(PlatformTarget)\$(Configuration)

・リンカー→追加の依存ファイル
libfbxsdk.lib

・ビルド後のイベント
DLL形式を使うので、実行ファイルと同じ場所にDLLファイルをコピーする
copy "C:\Program Files\Autodesk\FBX\FBX SDK\<SDKのバージョン>\lib\vs2015\$(PlatformTarget)\$(Configuration)\libfbxsdk.dll" "$(OutDir)"
 

Xcode
・Header Search Pathsに追加
/Applications/Autodesk/FBX SDK/<SDKのバージョン>/include

・Other Linker Flagsに追加
Degubビルド
/Applications/Autodesk/FBX SDK/<SDKのバージョン>/lib/clang/debug/libfbxsdk.a
Releaseビルド
/Applications/Autodesk/FBX SDK/<SDKのバージョン>/lib/clang/release/libfbxsdk.a

以上の設定が終わったらサンプルコードを追加してビルドが通るか試してみましょう。ビルドでっきるっかなー。

#ifdef _MSC_VER
// FBX SDKをDLL形式で使うと定義
// TIPS:fbxsdk.hをインクルードする前に定義する
#define FBXSDK_SHARED
#endif

#include <fbxsdk.h>                // FBX SDKのヘッダーファイル

// TODO:以下のコードを適切な場所に追加する

// FBX SDKを生成・初期化
FbxManager* manager = FbxManager::Create();
assert(manager);

// 読み込み機能を生成
FbxImporter* importer = FbxImporter::Create(manager, "");
assert(importer);

if (!importer->Initialize("hoge.fbx"))
{
  // 読み込み失敗
}

// 読み込み用のシーンを生成
FbxScene* scene = FbxScene::Create(manager, "");
assert(scene);

// ファイルからシーンへ読み込む
importer->Import(scene);

// FbxImporterはもう使わないのでここで破棄
importer->Destroy();

// 
// シーンから必要な情報を取り出す処理を書く
//

// シーンを破棄
scene->Destroy();

// FBS SDKを破棄
manager->Destroy();

続きます。

ではまた次回!

boost::optional が便利

30
コード書いとる??

今更ながら boost::optional が便利です。

コンテナの中から一番小さい値を探す時とか簡潔に書けるぜ!

std::vector<int> value = { 1, 2, -3, 4, 5 };
boost::optional<int> min_value;
for (auto v : value)
{
  if (!min_value || min_value > v) min_value = v;
}
std::cout() <<  *min_value << std::endl;

値を取り出す時にポインタっぽく書く以外は、普通の変数と同じ感じに書けて素敵。

ほんと今更感。でもいいじゃん!

ではまた次回。 
記事検索
このブログを書いとる人
電子書籍発売中

「チュートリアル形式で始めるOpenAL」
サウンド怖くない。C++による8つのチュートリアルで始めるOpenALプログラミング。さああなたも、自作アプリに魅力的な音効を添えてみませんか??
⇒Kindle版 ⇒iBooks版


「iPhoneアプリ『ういろう』のレシピ」
ゲームってどうやって作ってるの?? 拙アプリ『ういろう』の製作過程を本にまとめました。もちろんソースコードつき
⇒Kindle版 ⇒iBooks版


『チュートリアル形式で始めるOpenGL[2D編]』
OpenGL怖くない。C++による16のチュートリアルで始めるOpenGLプログラミング[2D編]。さああなたも、ゲーム作りを始めてみませんか?
⇒Kindle版 ⇒iBooks版
自作ゲーム配信中

『BRICK & TRIP』
咄嗟の判断に、あなたの指先はついてこれるか?! 爽快フリックアクション!! 様々な難関をくぐり抜けて旅の終着点を目指そう!!
⇒AppStore


『ういろう』
名古屋土産ういろうがiPhoneで大活躍?! 白ういろうを守れるのはあなただけ。ひゅーん、ぼよよーん!!
⇒AppStore ⇒LITE版


『こなへん』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒AppStore ⇒LITE版


『GEOSPOT』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒Windows ⇒Mac


『TieGunner』
マウス片手に大宇宙へ飛び立とう!『しっぽシューティング』というジャンルを作って頂きました^^; WinでもMacでも動きます。ソースもあるでよw
⇒Windows ⇒Mac
監修を担当しました

QRコード
QRコード
  • ライブドアブログ