<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/smashonline/">
    <title>smashonline @ ウィキ</title>
    <link>http://w.atwiki.jp/smashonline/</link>
    <atom:link href="https://w.atwiki.jp/smashonline/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>smashonline @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-09-03T23:23:58+09:00</dc:date>
    <utime>1220451838</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/13.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/12.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/11.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/smashonline/pages/10.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/19.html">
    <title>モデルデータフォーマット</title>
    <link>https://w.atwiki.jp/smashonline/pages/19.html</link>
    <description>
      &amp;bold(){2008/9/3(日)}
　ぇー、モーションコンバータは以前作ったので、次は
　モデルコンバータをがんばって作ってました！。
　で、できました(･ω･)

　一応、メタセコでmikoto向けに作られたデータサンプルを
　適当にネットで落としてきて、それをコンバートするようにしました。
　
　結構ややこしかったです。

　mikotoの仕様として、ボーンの扱いと頂点の依存関係が
　非常に癖があります。

　ボーンの扱いは、オブジェクト名が bone: という命名規則があり、
　頂点の依存するボーンの設定は、anchor: なる命名規則があります。

　また、ボーンは三角形のポリゴンで表されており、
　三角形の一番短い辺と、一番長い辺の交点が、親へつながるピボットポイントとなります。
　逆に、一番長い辺と、二番目の長い辺の交点が、子へつながるピボットポイントとなります。

　アンカーに関しては、sdef: 命名規則があるオブジェクトのみ適用できる仕様で、
　それ以外のオブジェクトは、自身のオブジェクト名と対応するボーン名と関連付けされる仕様です。

　あー、ややこしいですね(´・ω・｀)

　まぁそんな感じなのでそのあたりをすべて、コンバータで吸収し、
　データフォーマットは、頂点バッファをズラっと並べて、
　マテリアルをズラっと並べて、親子階層構造ボーンをズラっと並べて、
　名前テーブルをズラっと並べてみました。

　あとは、実機側(DirectX)をサクっと組めば、ひとまず
　モデルが出て、モーションするところまで進めます。

　んー。仕事がちょっと忙しかったので大変でした(&#039;A&#039;;)



&amp;bold(){2008/8/3(日)}
　mikoto から 独自フォーマットの fcha への変換ツールを作成。
　まぁそういうことで。
　このWikiはファイルアップロードできないのか orz
　ツールを置いておきたいのに(´・ω・｀)


&amp;bold(){2008/7/28(日)}

　えー。モデルのデータフォーマットです。

　Ｘファイルでいこうかなーとも思ったのですが、
　以前は自作フォーマットでモーションエディターまで自作したのですが、
　今回はその    </description>
    <dc:date>2008-09-03T23:23:58+09:00</dc:date>
    <utime>1220451838</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/18.html">
    <title>クラス設計</title>
    <link>https://w.atwiki.jp/smashonline/pages/18.html</link>
    <description>
      * テンプレートメンバ関数を含んだクラスの抽象的な扱いに関して
----
要するに、テンプレートメンバ関数を保持したクラスの、
実装とインターフェースの切り分け方についてだが、

はっきり言ってここだけを見ると、仮想テンプレートメンバ関数なるものは
無い(できなくて当たり前)のでさぁどうしよう。ということ。

個人的には、インターフェースクラスに実装してしまう以外の
方法は無い気がする。

何か良い方法があればなー。

誰か良い方法があればコメントお願い。

- test  -- Bazz  (2008-06-21 20:56:02)
#comment    </description>
    <dc:date>2008-06-21T20:56:02+09:00</dc:date>
    <utime>1214049362</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/17.html">
    <title>typelist</title>
    <link>https://w.atwiki.jp/smashonline/pages/17.html</link>
    <description>
      *TypeList

ここでは、Lokiに記されているTypeListについての備忘録。

まずは、TypeListの基本となる構造から。
 class NullType {};
 
 template &lt; typename H, typename T &gt;
 struct TypeList
 {
 	typedef H Head;
 	typedef T Tail;
 };

特に説明はいらないですね。

これを定義する方法は次のようにする。

 typdef TypeList&lt; int, NullType &gt; tListType;

登録数が１つの場合はこうなる。

 typedef TypeList&lt; int, TypeList&lt; char, TypeList&lt; unsigned int, NullType &gt; &gt; &gt; tListTyep;

登録数が３つにもなるとこうなる。

けどこれだと登録する数が増えると面倒なので以下のようなマクロを用意する。

 #define TYPELIST_1(T1) TypeList &lt; T1, NullType &gt;
 #define TYPELIST_2(T1, T2) TypeList &lt; T1, TYPELIST_1(T2) &gt;
 #define TYPELIST_3(T1, T2, T3) TypeList &lt; T1, TYPELIST_2(T2, T3) &gt;

使い方は簡単。

 typedef TYPELIST_3( int, char, unsigned int ) tListType;

次、

登録された型の数を数える方法は、次のような定義を用意する。
 template &lt; typename tList &gt;
 struct TypeListLength;
 
 template &lt; typename H, typename T &gt;
 struct TypeListLength &lt; TypeList &lt; H, T &gt; &gt;
 {
 	enum { length = TypeListLength&lt; T &gt;::length + 1 };
 };
 
 template &lt;&gt;
 struct TypeListLength     </description>
    <dc:date>2008-06-19T00:56:48+09:00</dc:date>
    <utime>1213804608</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/16.html">
    <title>GNU Make</title>
    <link>https://w.atwiki.jp/smashonline/pages/16.html</link>
    <description>
      *GNU Make

&amp;bold(){2008/6/20}
　えー、あれ。
　コンパイルできたはいいけど、デバッグ情報のことすっかり忘れてた orz

　よく考えたらVCでステップデバッグできないじゃん！
　ということで、今日はVCでデバッグできるところまで。

　まず。コンパイルにオプションを付加する。
　
 $(TARGET_OBJ_DIR)/%.obj : %.cpp
 	cl -c -nologo -EHsc -GR -Zc:forScope -Zc:wchar_t \
 	/Od /Zi /Fd&quot;debug\vc90.pdb&quot; \
 	$(addprefix -I,$(INCLUDE_HEADER)) -Fo$@ $&lt;

こんな感じ。

重要なのは、/Od と /Zi 。
/Od はコードの最適化を一切行わない設定で、
/Zi はデバッグ情報を出してくれる設定。
あと、/Fb&quot;debug\vc90.pdb&quot;
これは、デバッグ情報を出力するディレクトリを指定している。

これで、CLの方はOK

次はリンカ側

 $(TARGET_EXE_FILES) : $(TARGET_OBJ_LIST_FILES)
 	link -nologo -out:$@ $^ /debug \
 		/SUBSYSTEM:WINDOWS /MACHINE:X86 /ERRORREPORT:PROMPT $(LIB_LIST)

んな感じ。

追加したのは、/debug だけ。デバッグだよって教えてあげる。

んで、make

んで、できあがった *.exe を、VCに食わせる。

んで、適当なソースを食わせて、ブレイクを張る。

んで、実行


ブレイクに止まったー！！(゜∀゜)ｷﾀﾜｰ

ということで完了。

これで無事、VCでステップデバッグできるようになりましたっと。


＃はぁ、もう少ししたらプリコンパイルヘッダーとかもやんなきゃなー…
＃リリースとデバッグでmakeの処理わけていかなきゃなー…ﾒﾝﾄﾞｲﾅｰ
＃はやくゲームを作るところまでいきたいなー…


&amp;bold(){2008/6/19}
　えー、あんまりパターンルール理解してませんでした！

    </description>
    <dc:date>2008-06-20T01:15:09+09:00</dc:date>
    <utime>1213892109</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/15.html">
    <title>nmake</title>
    <link>https://w.atwiki.jp/smashonline/pages/15.html</link>
    <description>
      *nmake

-&amp;bold(){2008/6/1}
　　まぁ、結論から言うと、GNU make に慣れすぎてて、
　　ちょっとやりたいこととかができないもどかしさがあったので、
　　[[GNU Make]]でパス通してやることに決定!!
　
　　ということで、[[GNU Make]]のページで続きを書き、このページは終了とする。

-&amp;bold(){2008/6/1}
　　ひとまず、printf()のみ記述したmain.cのみを用意して、meadowのM-x compileからnmakeを
　　発行してコンパイルしてみる。…何やら致命的エラーをはいた。アルェ？
 NMAKE : fatal error U1077: &#039;&quot;c:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.EXE&quot;&#039; : リターン コード &#039;0xc0000135&#039;

　　meadowもcygwinからも同様に失敗する。しかし、Visual Studio 2008 コマンドプロンプトから
　　nmakeすると成功した。

　　&amp;bold(){どうやら何か環境設定が足りていないようだ。}

　　Visual Studio 2008 コマンドプロンプトの実行される手順を把握し、
　　どこかで設定されているはずの環境設定を探す。

 vsvars32.bat
　
　　あった。

　　今までは、CygwinからMeadowを起動していたけれど、この環境設定バッチを通したいので、
　　これからは、Visual Studio 2008 コマンドプロンプトからmeadowを起動するように変更。

　　コンパイル…

　　&amp;bold(){成功!!}

　　よし、とりあえずこれでOK。
　　cygwinはまぁbin内で使えるものもあるし、GNU make用に使うとしよう。    </description>
    <dc:date>2008-06-06T23:39:23+09:00</dc:date>
    <utime>1212763163</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/14.html">
    <title>marriage memo</title>
    <link>https://w.atwiki.jp/smashonline/pages/14.html</link>
    <description>
      *MARRIAGE MEMO

-概要
 MARRIAGEに関するメモを書くところ。

-購入リスト
--掃除機
--テーブル    </description>
    <dc:date>2008-06-01T01:42:20+09:00</dc:date>
    <utime>1212252140</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/13.html">
    <title>private</title>
    <link>https://w.atwiki.jp/smashonline/pages/13.html</link>
    <description>
      *PRIVATE
-[[general memo]]
-[[marriage memo]]    </description>
    <dc:date>2008-06-01T01:39:25+09:00</dc:date>
    <utime>1212251965</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/12.html">
    <title>プログラム環境</title>
    <link>https://w.atwiki.jp/smashonline/pages/12.html</link>
    <description>
      *プログラム環境

&amp;bold(){コンパイラ}
-Microsoft Visual Studio 2008 pro
 コマンドラインベース開発
-[[nmake]]に関するメモ(もう使わなくなった!!)
-[[GNU Make]]に関するメモ(こっちに慣れすぎてるからやっぱコッチでorz)


&amp;bold(){エディタ}
-Meadow3.0(Emacs派生)
 .emacs
 
 meadowセットアップに関するメモ

&amp;bold(){シェル}
-Cygwin
 Meadow起動エイリアスの実行
 以降はMeadow内からCygwinを通して全操作を行う
 
 .bashrc
 
 cygwinセットアップに関するメモ    </description>
    <dc:date>2008-06-06T23:55:28+09:00</dc:date>
    <utime>1212764128</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/11.html">
    <title>program</title>
    <link>https://w.atwiki.jp/smashonline/pages/11.html</link>
    <description>
      プログラムページ

[[プログラム環境]]
[[typelist]]
[[クラス設計]]
[[モデルデータフォーマット]]    </description>
    <dc:date>2008-07-28T00:55:33+09:00</dc:date>
    <utime>1217174133</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/smashonline/pages/10.html">
    <title>プラグイン/コメント</title>
    <link>https://w.atwiki.jp/smashonline/pages/10.html</link>
    <description>
      * コメントプラグイン
@wikiのwikiモードでは
 #comment()
と入力することでコメントフォームを簡単に作成することができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_60_ja.html


-----
たとえば、#comment() と入力すると以下のように表示されます。

#comment    </description>
    <dc:date>2008-05-30T22:47:02+09:00</dc:date>
    <utime>1212155222</utime>
  </item>
  </rdf:RDF>
