diff options
| author | Oni-Men <sensyaheis@gmail.com> | 2019-08-22 18:34:15 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-08-22 18:34:15 +0900 |
| commit | 6b571a779905a5cf17307a939d75c6da547e5ad4 (patch) | |
| tree | fccddcedf0a592fe2f0d080d7a1d1631ff6edc31 /src/client/app | |
| parent | Roomで未保存警告ダイアログなどを追加 (#5332) (diff) | |
| download | misskey-6b571a779905a5cf17307a939d75c6da547e5ad4.tar.gz misskey-6b571a779905a5cf17307a939d75c6da547e5ad4.tar.bz2 misskey-6b571a779905a5cf17307a939d75c6da547e5ad4.zip | |
Improve furniture preview (#5328)
* Improve furniture preview
* improve calc method
* camera.aspectいらないことに気付いた
* refactor & go camera far away
* 対角線の長さで計算するように
* 対角線の計算にhypot()を使用
Co-Authored-By: Aya Morisawa <AyaMorisawa4869@gmail.com>
Diffstat (limited to 'src/client/app')
| -rw-r--r-- | src/client/app/common/views/pages/room/preview.vue | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/client/app/common/views/pages/room/preview.vue b/src/client/app/common/views/pages/room/preview.vue index 3f849d8c04..94c13cee9f 100644 --- a/src/client/app/common/views/pages/room/preview.vue +++ b/src/client/app/common/views/pages/room/preview.vue @@ -10,7 +10,8 @@ export default Vue.extend({ data() { return { selected: null, - objectHeight: 0 + objectHeight: 0, + orbitRadius: 5 }; }, @@ -57,9 +58,9 @@ export default Vue.extend({ const timer = Date.now() * 0.0004; requestAnimationFrame(render); - camera.position.y = 2 + this.objectHeight / 2; - camera.position.z = Math.cos(timer) * 10; - camera.position.x = Math.sin(timer) * 10; + camera.position.y = Math.sin(Math.PI / 6) * this.orbitRadius; // Math.PI / 6 => 30deg + camera.position.z = Math.cos(timer) * this.orbitRadius; + camera.position.x = Math.sin(timer) * this.orbitRadius; camera.lookAt(new THREE.Vector3(0, this.objectHeight / 2, 0)); renderer.render(scene, camera); }; @@ -89,6 +90,13 @@ export default Vue.extend({ }); const objectBoundingBox = new THREE.Box3().setFromObject(obj); this.objectHeight = objectBoundingBox.max.y - objectBoundingBox.min.y; + + const objectWidth = objectBoundingBox.max.x - objectBoundingBox.min.x; + const objectDepth = objectBoundingBox.max.z - objectBoundingBox.min.z; + + const horizontal = Math.hypot(objectWidth, objectDepth) / camera.aspect; + this.orbitRadius = Math.max(horizontal, this.objectHeight) * camera.zoom * 0.625 / Math.tan(camera.fov * 0.5 * (Math.PI / 180)); + scene.add(obj); }; |