xxxxxxxxxx
70
// _orbitとは別の回転方法
// で...できた???
// freeのoption
// たとえば
// orbitControl(1, 1, 1, {free:true});
// ってやるとfreeになるわけ。
// まあこれはおいおいって感じですね。
/*
変更点まとめ
orbitControlにoption.freeを追加(デフォルトtrue)
option.freeがtrueの場合には_orbitFreeを使うように仕様変更(xだけ-を付ける)
orbitControl()のドキュメントにfreeに関する追記
_orbitの下に_orbitFreeを追加してドキュメントも追加
unit testを追加する。内容は_orbitFree(1,0)と(0,1)に関する挙動の変更
及び勝手な方向に関するPI/100の大きさの回転200回で戻るかどうかの確認
追加
freeの場合は拡大縮小、回転ともに_orbitFree()で実行してください
そうでないとバグるようです
ビルド版でバグが報告されました(原因は不明ですが...)
おそらく_orbit()だけクラスに組み込まれたことが原因のようです
ES6書き換えの副作用の可能性があります
なのでメソッドの併用は避けてください
_orbitFree()だけ使うようにしたらバグが消えました
なので
どちらか一方だけ使うようにしましょう。
ついでに
2次元のベクトルなのに第3成分に0を足していて
不自然なので
直しましょう
*/
let starModel;
function preload(){
starModel = loadModel("https://inaridarkfox4231.github.io/models/SMALL_STELLA_DODECA.stl", true);
}
function setup(){
createCanvas(400, 400, WEBGL);
pixelDensity(1);
const _gl = this._renderer;
_gl.prevTouches = [];
_gl.zoomVelocity = 0;
_gl.rotateVelocity = createVector(0, 0);
_gl.moveVelocity = createVector(0, 0);
//camera(400, 400, 400, 0, 0, 0, 0, 0, -1);
// Flags for recording the state of zooming, rotation and moving
_gl.executeRotateAndMove = false;
_gl.executeZoom = false;
}
function draw(){
background(0);
orbitControl();
noStroke();
const m = this._renderer.uMVMatrix.mat4;
directionalLight(128, 128, 128, -m[2],-m[6],-m[10]);
ambientLight(128);
fill("orange");
ambientMaterial("orange");
specularMaterial(64);
model(starModel);
debugMode(AXES);
}