SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

jQueryの記法でWebGLを操作できるライブラリ「jThree」の活用

jThreeプレーヤープラグインの使い方

jQueryの記法でWebGLを操作できるライブラリ「jThree」の活用 第6回

実際にjThreeプレーヤーを使ってみる

 前回までに作ったサンプルと同じ構成のコンテンツをjThreeプレーヤー上で動かしてみましょう。

 今回もボーカロイド楽曲で有名な「メルト」の音源ファイルを使用します。サンプルzipには同梱しておりませんのであらかじめ『初音ミク が オリジナル曲を歌ってくれたよ「メルト」』のページ上部説明文中の「mp3とか→」URLにアクセスしてダウンロードし、audioディレクトリ内に「melt.mp3」というファイル名でアップしてください。

 また、オンラインオーディオコンバーターでmp3データをoggに変換することができます。

index.htmlサンプル:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>jThree - demo</title>
<style>
body {
    position: fixed;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
}
</style>
</head>
<body>
    <a id="jThree-player" href="http://jthree.jp/">メルト</a>
    <!--プレーヤーの前にjQueryを読み込んでください。-->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <script src="script/jThree.Player.js"></script>
    <script src="index.js"></script>
</body>
</html>
index.gomlサンプル:
<?xml version="1.0" encoding="UTF-8"?>
<goml>
    <head>
        <txr id="blueSky" src="img/sky.png" />

        <!--misc.drawFloor関数はプレーヤーが定義しているものですがバージョンアップでなくなる予定です。2つ目の引数に床の基本色、3つ目の引数に模様の色を指定します。-->
        <txr type="canvas" id="floorTxr" param="width: 32; height: 32; repeat: 10; wrap: 0;" draw="misc.drawFloor(a, '#fff', '#2ff');" />

        <gmt type="Sphere" id="skyGmt" param="450 32 16" />
        <gmt type="Plane" id="floorGmt" param="60 60" />

        <!--箱庭(スカイドーム)は内側(裏面)から見るためsideプロパティを1に設定します-->
        <mtr type="MeshPhong" id="skyMtr" param="side:1;ambient: #fff; map:#blueSky;"/>

        <!--床は両面描画するためsideプロパティを2に設定します-->
        <mtr type="MeshPhong" id="floorMtr" param="side:2; map: #floorTxr;" />

        <!--HTMLのbody要素をフレームにするのでframe属性を省略します-->
        <rdr param="antialias: true;" />

        <!--MMDのモデルデータを取得します-->
        <model src="model/miku.pmx" />

        <!--MMDのモーションデータを取得します-->
        <motion id="model_motion" src="motion/model_motion.vmd" />
        <motion id="camera_motion" src="motion/camera_motion.vmd" />

    </head>
    <body>
        <scene>
            <!--スカイドームを設置-->
            <mesh gmt="#skyGmt" mtr="#skyMtr" />
            <!--床を設置-->
            <mesh gmt="#floorGmt" mtr="#floorMtr" style="rotate:1.57 0 -0.785;"/>

            <!--環境光を設置-->
            <light type="Amb" />
            <!--太陽光を画面左上手前に設置-->
            <light type="Dir" style="light-color: #9f9f9f; position: -14 28 24.5;" />

            <!--カメラを画面手前上部に設置してMMDのモーションを適用-->
            <camera motion="#camera_motion" style="position: 0 10 30; lookAtY: 10;" />

            <!--MMDのモデルを表示-->
            <mmd model="model" motion="#model_motion" />
        </scene>
    </body>
</goml>
index.jsサンプル:
jThree.Player.setScript( {
    jQuery: "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js",
    jThree: "script/jThree.js",
    ammo: "script/ammo.js",
    MMD: "script/jThree.MMD.js",
    other: [ "//cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js" ]
} );

jThree.Player( {
    id: "jThree-player",
    goml: "index.goml",
    img: "img/thumbnail.jpg",
    audio: {
        "audio/mp3": "audio/melt.mp3",
        "audio/ogg": "audio/melt.ogg"
    },
    onLoad: function() {
        jThree( "mesh:first" ).animate( { rotateY: "-=1.57" }, 30000, "easeInOutCubic", arguments.callee );
    },
    credits: [
        {
        type: "楽曲",
        url: "http://supercell.sc/melt/",
        name: "supercell"
        },
        {
        type: "モデルデザイン",
        url: "https://twitter.com/animasasa",
        name: "あにまさ"
        },
        {
        type: "モデル・カメラモーション",
        url: "http://www.nicovideo.jp/watch/sm22045369",
        name: "pokky"
        },
        {
        type: "スカイドームテクスチャ",
        url: "http://seiga.nicovideo.jp/user/illust/11592603",
        name: "(メ_メ)"
        }
    ]
} );

 ブラウザでindex.htmlにアクセスして、以下の画面になれば成功です。

まとめ

 今回はjThreeについて、主要なプラグインの機能とオーディオコントロールをコンパクトにまとめたjThreeプレーヤープラグインの使い方を解説しました。これまでに紹介できなかった機能もたくさんありますが、全6回の連載を通してWebGLコンテンツを手軽に作れるようになったことがお分かりいただけたのではないかと思います。

 誰もがWebGLで作る楽しさを享受できる世界になることを目指して、今後もjThreeは進化を続けていきます。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
jQueryの記法でWebGLを操作できるライブラリ「jThree」の活用連載記事一覧

もっと読む

この記事の著者

松田 光秀(jThree合同会社)(マツダ ミツヒデ)

jQueryの記法で操作できるWebGLライブラリ「jThree」の開発者でjThree合同会社の代表。JavaScriptのスキルのみで平成26年2月に1人で起業する。平成元年生まれの24歳で現役高校生(平成26年5月時点)。

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7865 2014/07/07 14:00

イベント

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

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

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

メールバックナンバー