LightWave Data Loader

NyaRuRu

First Version : February 29, 2004
Last Update : April 17, 2004

0. Index

  1. Introduction
  2. Namespaces
  3. Installation
  4. Download
  5. Bibliography

1. Introduction

LightWaveのデータファイルからの直接ロードをサポートするライブラリとして,Object, Scene Library(資料[1]),Teddy 3D(資料[2]),Luna(資料[3])などがあります.P/Invokeを用いれば,.NET Frameworkからこれらのライブラリを利用することも出来るでしょう.しかしStreamとの親和性やシリアライズサポート,セキュリティ保護の点で,新たにC#でネイティブ実装するに足るメリットがあると考えました.Surface,Texture,Clip周りのロードはフォーマットが複雑なため実装を後回しにし,まずはVer.0.1として最低限の情報のロードに対応したものをリリースします.

特徴は以下の通りです.

現バージョンでは以下のような情報の読み込みに対応できていません.

またロードしたデータの検証用に,LightWaveのデータをロードしXファイルのテキスト形式に変換するライブラリも作成しました.アニメーション付き階層構造のデータを出力可能です.アニメーションデータは元データのキーフレームの時刻及びその中間点時刻の姿勢情報を出力しています.本来出力時に計算すべきデータで,出力に対応していないデータは以下の通りです.

2. Namespaces

ここではネームスペースごとにクラスの概要を説明していきます.
各クラスについての詳しい説明は,付属のヘルプをご覧下さい.

LWLoader

LWLoaderネームスペースには本ライブラリで使用される基本的な型情報が定義されています.簡単なベクトル型に加え,FourCC構造体,ロード機能を公開するManagedLoaderクラス,時間変化する数値表現を行うEnvelopeInfoクラスなどが定義されています.また,オブジェクトファイル・シーンファイル両方で使用されるSurfaceInfoクラスとClipInfoクラスも,このネームスペースで定義されています.

LWLoader.ObjectFile

LWLoader.ObjectFileネームスペースにはLWO2ファイル形式固有のデータを表現するための型情報が定義されています.MeshInfoクラスがLWO2ファイルに対応します.データはLWO2ファイル形式を強く意識した階層構造で保持しています.大抵のフィールドについてはLWO2ファイルフォーマット(資料[4])に対応しています.サーフェイス・テクスチャ情報は非常にデータ項目が多いため,現在はほとんど読み飛ばしています.
また,LWO2ファイル形式には法線やUVマップを計算するためのパラメータは格納されているのですが,計算後の値そのものは格納されていないことがあって,場合によっては自前で計算する必要があります.法線やUVマップの計算方法に関しては,前述のドキュメントやLuna(資料[3])のソースコードなどが参考になるでしょう.

LWLoader.SceneFile

LWLoader.SceneFileネームスペースにはLWS3ファイル形式固有のデータを表現するための型情報が定義されています.SceneInfoクラスがLWO3ファイルに対応します.データはLWO3ファイル形式を強く意識した階層構造で保持しています.大抵のフィールドについてはLWS3ファイルフォーマット(資料[5])に対応しています.サーフェイス・テクスチャ・クリップ情報に関しては,LWO2との兼ね合いもあって現在は完全に読み飛ばしています.LWS3ファイルからLWO2ファイルが参照されていても自動では読み込みません.ファイル名とレイヤー番号が記録されていますので,ユーザーの目的に応じて柔軟な対応が可能となっています.

LWLoader.XFile

LWLoader.XFileネームスペースにはLightWave Data Loaderのデータ型からテキスト形式XFileへのエクスポータが利用する型が定義されています.エクスポータ本体であるExporterクラスと,専用コールバックであるMeshLoadHandlerデリゲート型が定義されています.

3. Installation

本ライブラリには2つのDLLが含まれています.依存関係や特権が少なくて済むようにロードルーチン本体と付加機能は分離してあります.

LWLoader.dll

LightWave Data Loader本体の機能を利用するには,このDLLを参照設定に加えます.System.dll及びSystem.Drawing.dllに依存しています.

LWX.dll

テキスト形式XFileへのエクスポータ本体です.LWLoader.dllに加え,Microsoft.DirectX.dll,Microsoft.DirectX.Direct3D.dll,Microsoft.DirectX.Direct3DX.dll(いずれもAssembly Version 1.0.1901.0)に依存しています,

4. Download

LWLib0.1.1568.zip

ReleaseビルドのLWLoader.dllとLWX.dllとヘルプのみが入っています.通常使用であればこちらのみダウンロードすれば十分です.

LWLib0.1.1568-src.zip

全てのソースファイルと,Xファイル形式エクスポータのテストコードが入っています.Visual C# .NET 2003形式のソリューションファイルとNDocのプロジェクトファイルも同梱されています.

5. Bibliography

参考資料

  1. Object, Scene Library[dstorm.co.jp]
    →LightWave日本国内代理店であるDStormによるI/Oライブラリです.C言語用,ソース付き.
  2. Teddy 3D Graphics Library[sourceforge.net]
    →シーングラフ+LightWaveのローダー+SDLを利用したレンダラー.ソース付き.
  3. DirectX用ライブラリLuna
    →シーングラフ+LightWaveのローダー+DirectXを利用したレンダラー.ソース付き.
  4. LWO version 2ファイルフォーマット[dstorm.co.jp]
    →DSTORM社による日本語訳です.
  5. LWS version 3ファイルフォーマット[dstorm.co.jp]
    →DSTORM社による日本語訳です.