<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>jThree &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/jthree/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>HTML5の技術だけで実装！「YouTubeみたいなWebGLプレーヤー」とは？</title>
		<link>/mitsuhide/10115/</link>
		<pubDate>Tue, 09 Sep 2014 23:50:15 +0000</pubDate>
		<dc:creator><![CDATA[松田光秀]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[FullScreen API]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[jThree]]></category>

		<guid isPermaLink="false">/?p=10115</guid>
		<description><![CDATA[連載： HTML5 Japan Cup 特集 (7)この記事では、HTML5 Japan Cup 2014で優秀賞を頂いた「YouTubeみたいなWebGLプレーヤー」で利用されている技術を解説します。 はじめに 「Yo...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/5jcup-2/" class="series-207" title="HTML5 Japan Cup 特集" data-wpel-link="internal">HTML5 Japan Cup 特集</a> (7)</div><p>この記事では、<a href="https://5jcup.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Japan Cup 2014</a>で優秀賞を頂いた「YouTubeみたいなWebGLプレーヤー」で利用されている技術を解説します。</p>

<h2>はじめに</h2>

<p>「<a href="http://jthree.jp/" title="jThree公式サイトで見る" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">YouTubeみたいなWebGLプレーヤー</a>」はコンテンツそのものとは分離された、オープンソースJavaScriptライブラリ「jThree」のプラグインです。オープンソースとして公開していますので、誰でも自身の作品に差し替えてブログなどに掲載することができます。WebGLの描画部分は全てjThreeで管理しています。この記事では、プレーヤーで採用している2つのHTML5 APIとjThreeの概要をご紹介します。</p>

<h2>プレーヤーの機能</h2>

<p>このプレーヤーは、まるで動画のごとくWebGLコンテンツを楽曲付きで再生できます。動画との違いはコンテンツ内のオブジェクトを自由に操作できることです。私が作ったものはカメラのアングルを操作するだけですがJavaScriptでできることなら実装可能です。
Oculus Rift表示に切り替えるボタンが標準搭載されておりVR体験を楽しむこともできます。</p>

<h2>SVGで作成した再生ボタン</h2>

<p>プレーヤーの中央に表示される赤い再生ボタンは、インラインSVGで描画しています。CSSを合わせても600バイト以下で画像よりデータ量を抑えられたのがポイントでした。WebGLに対応しているブラウザは、全てSVGをサポートしているので惜しみなく使うことができます。</p>

<p><a href="http://jthree.jp/" title="jThree公式サイトで見る" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/08/1.png" alt="1" width="567" height="374" class="alignnone size-full wp-image-10116" srcset="/wp-content/uploads/2014/08/1.png 567w, /wp-content/uploads/2014/08/1-300x197.png 300w, /wp-content/uploads/2014/08/1-207x136.png 207w" sizes="(max-width: 567px) 100vw, 567px" /></a></p>

<p>再生ボタンのHTMLは以下の通りです。</p>

<p></p><pre class="crayon-plain-tag">&lt;svg viewBox="0 0 77 54"&gt;
	&lt;rect fill="#1f1f1f" width="77" height="54" ry="15" /&gt;
	&lt;polygon fill="#fff" points="30.3,39.4 30.3,15.75 53,27.6"/&gt;
&lt;/svg&gt;</pre><p></p>

<h2>Fullscreen APIで全画面表示機能を実現</h2>

<p>プレーヤー右下の全画面表示ボタンを押すと、Fullscreen APIによってブラウザの枠も越えて、PC画面いっぱいにコンテンツが表示されます。プレーヤーはVRデバイスのOculus Riftにも対応しているため、より高い没入感を得るために必須の機能です。</p>

<p><a href="http://jthree.jp/" title="jThree公式サイトで見る" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/08/2.png" alt="2" width="567" height="319" class="alignnone size-full wp-image-10117" srcset="/wp-content/uploads/2014/08/2.png 567w, /wp-content/uploads/2014/08/2-300x168.png 300w, /wp-content/uploads/2014/08/2-207x116.png 207w" sizes="(max-width: 567px) 100vw, 567px" /></a></p>

<p>全画面表示を切り替えるJavaScriptのコードは以下のとおりです。</p>

<p></p><pre class="crayon-plain-tag">function requestFullscreen( target ) {

	if (target.webkitRequestFullscreen) {
		target.webkitRequestFullscreen(); //Chrome15+, Safari5.1+, Opera15+
	} else if (target.mozRequestFullScreen) {
		target.mozRequestFullScreen(); //FF10+
	} else if (target.msRequestFullscreen) {
		target.msRequestFullscreen(); //IE11+
	} else if (target.requestFullscreen) {
		target.requestFullscreen(); // HTML5 Fullscreen API仕様
	} else {
		alert("ご利用のブラウザはフルスクリーン操作に対応していません");
		return;
	}

}</pre><p></p>

<p></p><pre class="crayon-plain-tag">function exitFullscreen() {

	if ( document.exitFullscreen ) {
		document.exitFullscreen(); //HTML5 Fullscreen API仕様
	} else if ( document.cancelFullScreen ) {
		document.cancelFullScreen(); //Gecko:FullScreenAPI仕様
	} else if ( document.webkitCancelFullScreen ) {
		document.webkitCancelFullScreen(); //Chrome, Safari, Opera
	} else if ( document.mozCancelFullScreen ) {
		document.mozCancelFullScreen(); //Firefox
	} else {
		document.msExitFullscreen();
	}

}</pre><p></p>

<h2>オープンソースJavaScriptライブラリ「jThree」</h2>

<p>今回の作品のベースとなっているオープンソースJavaScriptライブラリ「jThree」についてご紹介します。今回紹介したプレーヤーとそれで再生するコンテンツ（WebGL）は「jThree」を使うことで、jQueryによく似た記法で操作・作成することができます。</p>

<p>「jThree」は8/31に「jThree v2」をリリースしました。これまで外部XMLファイルに記述していたWebGL描画タグをHTMLに埋め込めるようになりました。つまり、jThree v2は「インラインWebGL」を実現したのです。外部ファイルに頼らずHTMLファイル1つだけで描画することが可能で、当然アニメーションさせる前段階の静的な描画処理にはJavaScriptを一行も書く必要がありません。</p>

<p>jQuery関数の代わりにjThree関数を使ってDOMを操作することにより、動的な描画処理ができる点は従来通りです。さらに、これまでjThreeはMMD（.pmx/.vmd）のデータにしか対応していませんでしたが、v2からはプラグインによってあらゆるファイル形式を読み込めるようにもなりました。</p>

<p>jThree v2公開と同時にthree.js用JSON（.json/.js）・DirectX（.x）・Collada（.dae）・STL（.stl）の各ファイルに対応したプラグインを公式で用意しています。OBJ（.obj）とMTL（.mtl）ファイルにも順次対応予定です。</p>

<p></p><pre class="crayon-plain-tag">&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;style&gt;
body {
	position: fixed;
	width: 100%;
	height: 100%;
	margin: 0;
}
&lt;/style&gt;
&lt;script type="text/goml"&gt;
&lt;goml&gt;
	&lt;head&gt;
		&lt;rdr /&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;scene&gt;
			&lt;camera style="camera-far: 8000; position: 0 20 30; lookAt:0 15 0;" /&gt;
			&lt;light type="Amb" /&gt;
			&lt;light type="Dir" style="light-color: #bfbfbf; position:-14 28 60;" /&gt;
			&lt;obj model="town/ゲキド街Ver2.x" style="scale: 10;" /&gt;
		&lt;/scene&gt;
	&lt;/body&gt;
&lt;/goml&gt;
&lt;/script&gt;
&lt;script src="jQuery.js"&gt;&lt;/script&gt;
&lt;script src="jThree.js"&gt;&lt;/script&gt;
&lt;script src="jThree.XFile.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;&lt;/body&gt;
&lt;/html&gt;</pre><p></p>

<p><a href="http://jthree.jp/" target="_brank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/08/39ca614fcbd978cb3b908958ac5476ff.png" alt="街" width="600" height="426" class="alignnone size-full wp-image-10454" srcset="/wp-content/uploads/2014/08/39ca614fcbd978cb3b908958ac5476ff.png 600w, /wp-content/uploads/2014/08/39ca614fcbd978cb3b908958ac5476ff-300x213.png 300w, /wp-content/uploads/2014/08/39ca614fcbd978cb3b908958ac5476ff-207x146.png 207w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>

<p>詳しい「jThree」の解説は、私が執筆した<a href="http://codezine.jp/article/corner/522" title="Codezineで解説を見る" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Codezineさんの記事</a>をご覧ください。</p>

<p>※ jThree v2に対応したプレーヤーはありません。公式サイトでの配布も終了するのでプレーヤーを使ってみたい方はCodezineさんの第6回記事からサンプルファイルをDLしてお使いください。
<a href="http://codezine.jp/article/detail/7865" target="_brank" data-wpel-link="external" rel="follow external noopener noreferrer">jThreeプレーヤープラグインの使い方</a></p>

<h2>最後に</h2>

<p>今回は、「jThree」のプラグインとして開発した「YouTubeみたいなWebGLプレーヤー」の要素技術について解説しましたしました。最優秀賞を獲れなかったことは非常に残念ですが、誰もがこのプレーヤーのように手軽にWebで3DCGを楽しめる世界を実現することを目指し、開発を続けていきます。</p>

<p><a href="http://jthree.jp/" title="jThree公式サイトで見る" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/08/3.png" alt="3" width="567" height="319" class="alignnone size-full wp-image-10118" srcset="/wp-content/uploads/2014/08/3.png 567w, /wp-content/uploads/2014/08/3-300x168.png 300w, /wp-content/uploads/2014/08/3-207x116.png 207w" sizes="(max-width: 567px) 100vw, 567px" /></a></p>
]]></content:encoded>
		
		<series:name><![CDATA[HTML5 Japan Cup 特集]]></series:name>
	</item>
	</channel>
</rss>
