【初期設置】Three js でとりあえず何か表示したい。パート2
2016年12月9日板、球、三角を表示させるわ
前回の【初期設置】Three js でとりあえず何か表示したい。に引き続いてこんどは板と球と三角なのを出す。
板 : plane
球 : sphere
三角: shape
取りあえず板を出して見る。
前回作ったやつだとsceneがローカル変数?あんまよくわかんないけど、そこにいるので。
グローバル変数に変更
var scene = new THREE.Scene();
↑これだけ書かれてもわからないだろうけど。とりあえず一番外に出した。
後はそれぞれ作りたいモノをfunctionとして用意してみる。
板を出す
いたを出す
//板を出す
function ideyo_ita(){
//1.ジオメトリを新しく作る→PlaneGeometry - 板作るよ
var planeGeometry = new THREE.PlaneGeometry(10, 10);
//2.メッシュを作ります → 赤っぽいのにした
var planeMaterial = new THREE.MeshBasicMaterial({color: 0xeecccc});
//3.さっき作った1と2をTHREE.Mesh()の引数に入れてnew
var plane = new THREE.Mesh(planeGeometry, planeMaterial);
//場所決める
plane.position.x = 0;
plane.position.y = 0;
plane.position.z = 0;
scene.add(plane);
}
板が出ました
赤い板がでましたよ。
See the Pen 始めの一歩 by ziyudom (@ziyudom) on CodePen.
addしたのに表示されなかった
作っててscene.addしたのに表示されなかったのなんでかなぁ。って思ったけど、原因はレンダラーにあった。
ideyo_ita();//こんな感じで↓より先に renderer.render(scene, camera);
この子が走る前にscene.addしておかないと、この子は今のソースコードだと一回しか走らないので、描画されないのであった。
球を出す
https://threejs.org/docs/#Reference/Geometries/SphereGeometry
THREE.SphereGeometry
radius : 半径
widthSegments : 経度(縦)分割
heightSegments : 緯度(横)分割
↓こっから意味がわからない↓
phiStart : 開始位置、経度
phiLength : なんかぐいーって囲むヤツ横
thetaStart : 開始位置、経度
thetaLength : なんかぐいーって囲むヤツ縦
//球を出す
function ideyo_tama(){
//1.ジオメトリを新しく作る→SphereGeometry - 球作るよ
var geometry = new THREE.SphereGeometry( 5, 32, 32 );
//2.メッシュを作ります → 黄色?っぽいのにした
var material = new THREE.MeshBasicMaterial( {color: 0xffff55} );
//3.さっき作った1と2をTHREE.Mesh()の引数に入れてnew
var sphere = new THREE.Mesh( geometry, material );
sphere.position.x = 10;
sphere.position.y = 15;
sphere.position.z = 19;
scene.add(sphere);
}
球が出た
See the Pen 球を板を出す by ziyudom (@ziyudom) on CodePen.
三角を出す
//三角
function ideyo_sankaku(){
var length = 20, width = 15;
var shape = new THREE.Shape();
shape.moveTo( 0,0 );//スタート
shape.lineTo( 0, width );//次
shape.lineTo( length, width );//次
var geometry = new THREE.ShapeGeometry( shape );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var sankaku = new THREE.Mesh( geometry, material ) ;
sankaku.position.x = 0;
sankaku.position.y = 0;
sankaku.position.z = -4;
scene.add( sankaku );
}