SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

MikuMikuEffectで学ぶHLSL入門

3DCGツール「MikuMikuDance」のエフェクトを拡張する
「MikuMikuEffect」の概要と導入方法

MikuMikuEffectで学ぶHLSL入門(1)

  • このエントリーをはてなブックマークに追加

 本連載では、3DCG作成ツール「MikuMikuDance」にエフェクトを追加する「MikuMikuEffect」の使用方法と、エフェクトを構成するHLSLコードについて、6回に渡り解説していきます。

  • このエントリーをはてなブックマークに追加

はじめに

 MikuMikuDance(以降MMD)は、樋口優氏によって開発された、3DCG作成ツールです(参考資料1)。

 MMDは、ニコニコ動画などの動画投稿サイトにおける3DPV作成ツールとして人気が高く、ニコニコ動画には、MMDを使用した動画や、有志によって作成されたMMD用3Dモデルデータが数多く公開されています。

図1 MikuMikuDance作業画面
図1 MikuMikuDance作業画面

 本連載で紹介するMikuMikuEffect(以降MME)は、そんなMMDを拡張し、エフェクトファイルと呼ばれる、HLSLで記述されたシェーダプログラムをMMD上で実行できるようにするための拡張ツールです。

 本連載では、このMMEで動作するエフェクトファイルの使用方法と、エフェクトを構成するHLSLコードについて、6回に渡り解説していきます。

 第1回目となる今回は、MMEの紹介と導入方法を解説します。

対象読者

  • MMDを使っていて、エフェクトファイルの中身に興味のある方
  • HLSLのコーディングに興味のある方

MMEの紹介

MMEとは

 MMEMikuMikuEffect)は、筆者が開発した、MMDでエフェクトファイルを読み込めるようにするための拡張ツールです。

 ただし、MMDは一般的なプラグイン形式の拡張機能を持っていないため、MMEでは、API Hookという手法を使用して、MMDの描画処理に割り込むというかなり強引な方法をとっています。

 MME用のエフェクトファイルの作成は、主にニコニコ動画を中心とした有志によって行われており、すでに多数のエフェクトファイルが公開されています(参考資料3)。

エフェクトファイルとは

 エフェクトファイル(*.fx)とは、DirectXがサポートするシェーダプログラムファイルです。HLSL(High Level Shading Language)というプログラミング言語で記述されます。

 描画処理を行うシェーダの動作をプログラムすることによって、さまざまなエフェクトを3Dオブジェト描画の際に行うことができます。

 HLSLには、使用可能な機能に応じて複数のバージョンが存在しますが、MMEではShader Model 3.0までのHLSLに対応します(MMDがDirectX 9.0c上で動作するため)。

MMEの特徴

 MMEは、DirectXを使用してエフェクトを処理するため、描画結果をリアルタイムで得られるのが大きな特徴です。動画にエフェクトを追加するソフトウエアは、有償・無償を含め、さまざまなものが存在していますが、MME上で動作するエフェクトには、MMDの画面上で即座にエフェクト結果が得られるという利点があります。

 また、エフェクトファイルの編集を効果を確認しながら行えるよう、MMD上で使用中のエフェクトファイルを外部エディタで編集すると、自動的に再読み込みされて、結果が即座にMMD画面に反映される仕組みになっています。

注意点

 MMEのエフェクトは、GPU上で処理されるため、使用しているビデオカードの種類によっては、一部のエフェクトが実行できない場合があります。

 また、処理負荷の高いエフェクトを使用すれば、その分、MMD全体の描画速度が低下することになります。

コラム1 MMEを作ったきっかけ

 筆者は、MMEの前に「MikuMikuTransborder」というツールを作っていました。これは、MMDの3Dオブジェクトを別に任意のDirectXアプリの3D空間上に"出現"させる、というもので、その応用例として、自作DirectXアプリの3DオブジェクトをMMD上に出現させるという使い方がありました。MMEは、この機能をMMDの拡張に特化させてみようという発想から生まれました。
 

 といっても、開発当初はエフェクト用のツールではなく、単に、MMDの描画処理に割り込んで自作プログラムを実行させる、程度のものを想定していました。
 

 当時は、エフェクトファイルのことはよく知らず、特に組み込むことは考えていなかったのですが、その後、プログラムファイルを外部から与えて実行できることや、パーティクルなどの思った以上のさまざまな処理をこなせることを知り、MMDのオブジェクト描画にエフェクトファイルを適用するという、現在のMMEの形ができ上がりました。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
必要な環境

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
MikuMikuEffectで学ぶHLSL入門連載記事一覧

もっと読む

この記事の著者

舞力介入P(ブリョクカイニュウピー)

ニコニコ動画でMMD関連のツール開発者として活動中。代表作は「MikuMikuEffect」。我流のAPI Hookを常套手段とする、邪道プログラマです。ニコニコ動画マイリスト

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5997 2011/06/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング