Three.js(WebGL)で一年以上学習した成果と便利なクラス/ライブラリを紹介を紹介します。
成果物
地球: https://codepen.io/uemuragame5683/pen/YzWGEKv
月見: https://codepen.io/uemuragame5683/details/ExXLWYR
フォント: https://codepen.io/uemuragame5683/pen/wvexbMo
ハロウィン: https://codepen.io/uemuragame5683/pen/NWvvZXW
Three.js(WebGL)で一年以上学習した成果と便利なクラス/ライブラリを紹介うえむー
View Slide
自己紹介Name:うえむー フロントエンドエンジニアJob Skill:html / css / scss / javascript / jQuery / gulp.js /php etc...Private Skill:next.js / React.js / nuxt.js / micro cms / go etc...Hobby:プログラミング学習・ゴルフ・ボードゲーム・麻雀SNS・ブログサイトTwitter::https://twitter.com/uemuragame5683ブログサイト:https://nu-blogsite.net/ポートフォリオサイト:https://uemu-engineer.com/
目次・Three.jsについて・成果物・Three.jsの基礎・Three.jsのオススメのクラス / ライブラリを紹介
Three.jsについて
Three.jsとは?Three.jsは、少しでも簡単にWebサイト上に3Dのコンテンツを表示するライブラリです。 ライブラリなしでカメラ・影・ライト・メッシュ実装する場合はそれなりの高度な技術が必要になりJavascriptのコード量が膨大になっていきます。 Three.jsのようなライブラリを導入することで、Javascriptの基礎と、Three.jsのクラスを利用することで気軽に3Dのコンテンツを表示することができます。
Three.jsを学習するためにはどうすればいいの?当初は、Three.jsを勉強したいけどまずどこから手をつければいいかわかわからず、公式ドキュメントを見ると英文ばかりで何をどうすればいいのかわからない状態だったので、池田 泰延さんの技術ブログをみてThree.jsを学習してました。 https://ics.media/tutorial-three/ ある程度基礎を学んだら公式ドキュメントで様々なクラス / 型を利用して勉強しておりました。
成果物月見PV数 733月・地球・太陽PV数 1445
成果物FontLoaderハロウィン
Three.jsの基礎
Three.jsの基礎・HTMLファイル作成、CDNを導入 ・レンダラーを作成 ・シーンを作成 ・カメラを作成 ・メッシュを作成 ・光源設定
HTMLファイル作成、CDNを導入src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js">
レンダラー作成const width = 950, height = 500;const renderer = new THREE.WebGLRenderer({canvas: document.querySelector('#myCanvas')});renderer.setPixelRatio(window.devicePixelRatio);renderer.setSize(width, height);最初に、レンダリングするためにレンダラーを作成する必要があります。クラスに「canvas」変数と3Dのコンテンツを出力したい要素を設定します。
シーンを作成// シーンを作成const scene = new THREE.Scene();次に、メッシュをセットするためのシーン(ステージ)を用意します。
カメラを作成//カメラを作成const camera = new THREE.PerspectiveCamera(画角,アスペクト比,ニア(near),ファー(far);画角・・・視点からの角度 アスペクト比・・・縦横の比率ニア(near)・・・区間の開始距離 ファー(far)・・・区間の終了距離次に、カメラを作成します。カメラを作成しないとフロントには反映されません。カメラを作成するためのコードは以下になります。
メッシュ作成次にメッシュを作成していきます。 メッシュは正方形・ドーナツ型などいろんな形状があります。
メッシュを作成(作業工程)ジオメトリ作成 ・ジオメトリ(形状)を設定する(箱型、三角錐、円型、ドーナッツなど) ・ジオメトリ(形状)の幅・奥行き・高さを設定する マテリアル作成 ・マテリアル(質感)を設定する ・マテリアルのハイライト・カラー色を設定する メッシュを設定・シーンに加える。 ・設定したジオメトリ・マテリアルをメッシュのクラスに引数として渡す。 ・設定したメッシュをシーンに渡す。
メッシュを作成(コード)const geometry = new THREE.BoxGeometry(400, 400,400);const material = new THREE.MeshNormalMaterial({color:0xFFFFFF});const box = new THREE.Mesh(geometry, material);scene.add(box);
光源設定const directionalLight = newTHREE.DirectionalLight(0xffffff);scene.add(directionalLight);const pointLight = new THREE.PointLight(0xffffff, 1,10000);scene.add(pointLight);最後は光源設定です。光源設定をするとメッシュがより立体的に見えます。設定するのに時間がかかりました。
Three.jsの便利なクラス/ライブラリを紹介
OrbitControlsOrbitControlsというのは、要素・属性を指定するだけでカメラをグリグリ動かせることができる便利なクラスです。OrbitControlsの機能・オービット(回転): 左ボタンでドラッグ・ズーム(ピンチアウト・ピンチイン):マウスホイール・パン: 右ボタンでドラッグ
FontLoaderFontLoaderとはフォントを読み込むクラスであり、FontLoaderにフォントの素材データを格納し、格納先を指定すればと3D状にフォントを出力する事ができます。
CubeTextureLoaderCubeTextureLoaderというのは、以下のような上下左右の計6枚の画像を用意し、CubeTextureLoaderのクラス/型を利用して実装することでキューブ状な3Dコンテンツができたり、応用化としてガラス玉のようなものができます。
dat.GUIdat.GUIはJavascriptリアルタイムでパラメーター調整するライブラリです。このプラグインを読み込んで、パラメータの設定を行うだけでスライダーや数値入力ができるフォーム画面ができあがります。
まとめThree.jsは、少しでも簡単にWebサイト上に3Dのコンテンツを表示するライブラリである。 基礎を抑えればWebサイト上に3Dのコンテンツを表示できる。 Three.jsのクラス/ライブラリは3桁ぐらいある。
Thank YOU!