From a9a5c65c69fffe970b012d740479385903cff16b Mon Sep 17 00:00:00 2001 From: kovacsv Date: Tue, 20 Sep 2022 20:37:28 +0200 Subject: [PATCH] Add orthographic camera #293 --- assets/icons/camera_orthographic.svg | 107 +++++++++++++++++++-------- assets/icons/camera_perspective.svg | 92 +++++++++++++++-------- source/website/featureset.js | 2 +- source/website/website.js | 44 ++++------- website/css/O3DVIcons/O3DVIcons.woff | Bin 7732 -> 7848 bytes website/css/icons.css | 2 +- website/index.html | 4 +- website/info/css/O3DVIcons.woff | Bin 7732 -> 7848 bytes website/info/css/icons.css | 2 +- 9 files changed, 159 insertions(+), 94 deletions(-) diff --git a/assets/icons/camera_orthographic.svg b/assets/icons/camera_orthographic.svg index f65c09e..b5a6f9c 100644 --- a/assets/icons/camera_orthographic.svg +++ b/assets/icons/camera_orthographic.svg @@ -1,36 +1,81 @@ + id="defs25" /> + + + + + + + + + + + diff --git a/assets/icons/camera_perspective.svg b/assets/icons/camera_perspective.svg index 5b734b1..5677a05 100644 --- a/assets/icons/camera_perspective.svg +++ b/assets/icons/camera_perspective.svg @@ -1,35 +1,67 @@ + id="defs21" /> + + + + + + + + + diff --git a/source/website/featureset.js b/source/website/featureset.js index 6b17d76..1590268 100644 --- a/source/website/featureset.js +++ b/source/website/featureset.js @@ -1,4 +1,4 @@ export const FeatureSet = { - OrthographicView : false + }; diff --git a/source/website/website.js b/source/website/website.js index 076e209..78ed729 100644 --- a/source/website/website.js +++ b/source/website/website.js @@ -23,7 +23,6 @@ import { CookieGetBoolVal, CookieSetBoolVal } from './cookiehandler.js'; import { ShadingType } from '../engine/threejs/threeutils.js'; import { MeasureTool } from './measuretool.js'; import { CloseAllDialogs } from './dialog.js'; -import { FeatureSet } from './featureset.js'; import * as THREE from 'three'; @@ -557,33 +556,22 @@ export class Website this.viewer.FlipUpVector (); }); AddSeparator (this.toolbar, ['only_on_model']); - if (FeatureSet.OrthographicView) { - AddRadioButton (this.toolbar, ['camera_perspective', 'camera_orthographic'], ['Perspective camera', 'Orthographic camera'], 0, ['only_on_model'], (buttonIndex) => { - if (buttonIndex === 0) { - this.viewer.SetCameraMode (CameraMode.Perspective); - } else if (buttonIndex === 1) { - this.viewer.SetCameraMode (CameraMode.Orthographic); - } - }); - AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); - AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, ['only_full_width', 'only_on_model'], (buttonIndex) => { - if (buttonIndex === 0) { - this.viewer.SetFixUpVector (true); - } else if (buttonIndex === 1) { - this.viewer.SetFixUpVector (false); - } - }); - AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); - } else { - AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, ['only_on_model'], (buttonIndex) => { - if (buttonIndex === 0) { - this.viewer.SetFixUpVector (true); - } else if (buttonIndex === 1) { - this.viewer.SetFixUpVector (false); - } - }); - AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); - } + AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, ['only_full_width', 'only_on_model'], (buttonIndex) => { + if (buttonIndex === 0) { + this.viewer.SetFixUpVector (true); + } else if (buttonIndex === 1) { + this.viewer.SetFixUpVector (false); + } + }); + AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); + AddRadioButton (this.toolbar, ['camera_perspective', 'camera_orthographic'], ['Perspective camera', 'Orthographic camera'], 0, ['only_on_model'], (buttonIndex) => { + if (buttonIndex === 0) { + this.viewer.SetCameraMode (CameraMode.Perspective); + } else if (buttonIndex === 1) { + this.viewer.SetCameraMode (CameraMode.Orthographic); + } + }); + AddSeparator (this.toolbar, ['only_full_width', 'only_on_model']); let measureToolButton = AddPushButton (this.toolbar, 'measure', 'Measure', ['only_full_width', 'only_on_model'], (isSelected) => { HandleEvent ('measure_tool_activated', isSelected ? 'on' : 'off'); this.navigator.SetSelection (null); diff --git a/website/css/O3DVIcons/O3DVIcons.woff b/website/css/O3DVIcons/O3DVIcons.woff index a6e6968e0631a598c38ebdcbf7fec8b5d82e440b..ae6555806c4076e01cbe2d18887955c988578d55 100644 GIT binary patch delta 6421 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.)HL&~HH?{J#qpjS6LT7z*)|Kvw+|pFk0!<+9CeW2}D;#7rj* z<^y>ywJ~vu(y~WeK;WD`;}rl-*{f~^K$^o7U=7sEU$v8=85n=Tz2kS@*-P&>me;SM zu-3TFne5{@Awm&mPyi=yPK}Bf9J{3*tPPD$C}-4kR~n6xjEP_TDdam zQvsfMBkoi=?12;vl4|3ur*C&BNu*TS0c-h=i0iKYZ7K4)k>48lF*vbmC7=_VanRk~ z)FR89on3!eJ?&&s836(PtX#MBg+B~KrP?`Us_P^CIURu?YC1`jb$Vldd0^bDuJ$gSrctnS zbvp~Iaj!_M_I+*h%{Zx!tI+}AMvoT5#Q3f!13qQ1-2!&#b6qEuN4z>AEFA!#^48Un zDb4n^Ru*f!oNnE@hWj*CJ8Q>Dc~mCxW^Q!=vtHY^r5(-&{F;)L&$&S{`tAe~@iT}M z3zfhxSnxeO?=JvvhO5AMoMT{QU|;}ZsiX&DlN}o&1SjbWQIkR&Q&GkM^Z_sdXaX(* z@&jB0lmrF@palK}Rt5$JY6jQ`E(e$hPzclsC<)jKVhY|1QVZ}5oDAp obj, 3ds, stl, ply, gltf, 3dm, fbx, and more - -
Example models:
@@ -95,6 +93,8 @@ helmet
+ + diff --git a/website/info/css/O3DVIcons.woff b/website/info/css/O3DVIcons.woff index a6e6968e0631a598c38ebdcbf7fec8b5d82e440b..ae6555806c4076e01cbe2d18887955c988578d55 100644 GIT binary patch delta 6421 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.)HL&~HH?{J#qpjS6LT7z*)|Kvw+|pFk0!<+9CeW2}D;#7rj* z<^y>ywJ~vu(y~WeK;WD`;}rl-*{f~^K$^o7U=7sEU$v8=85n=Tz2kS@*-P&>me;SM zu-3TFne5{@Awm&mPyi=yPK}Bf9J{3*tPPD$C}-4kR~n6xjEP_TDdam zQvsfMBkoi=?12;vl4|3ur*C&BNu*TS0c-h=i0iKYZ7K4)k>48lF*vbmC7=_VanRk~ z)FR89on3!eJ?&&s836(PtX#MBg+B~KrP?`Us_P^CIURu?YC1`jb$Vldd0^bDuJ$gSrctnS zbvp~Iaj!_M_I+*h%{Zx!tI+}AMvoT5#Q3f!13qQ1-2!&#b6qEuN4z>AEFA!#^48Un zDb4n^Ru*f!oNnE@hWj*CJ8Q>Dc~mCxW^Q!=vtHY^r5(-&{F;)L&$&S{`tAe~@iT}M z3zfhxSnxeO?=JvvhO5AMoMT{QU|;}ZsiX&DlN}o&1SjbWQIkR&Q&GkM^Z_sdXaX(* z@&jB0lmrF@palK}Rt5$JY6jQ`E(e$hPzclsC<)jKVhY|1QVZ}5oDAp