diff --git a/graf3d/eve7/CMakeLists.txt b/graf3d/eve7/CMakeLists.txt index f6152ee616c14..71179175651b7 100644 --- a/graf3d/eve7/CMakeLists.txt +++ b/graf3d/eve7/CMakeLists.txt @@ -63,6 +63,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTEve ROOT/REveUtil.hxx ROOT/REveVector.hxx ROOT/REveViewer.hxx + ROOT/REveCamera.hxx ROOT/REveViewContext.hxx ROOT/REveVSD.hxx ROOT/REveVSDStructs.hxx @@ -126,6 +127,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTEve src/REveUtil.cxx src/REveVector.cxx src/REveViewer.cxx + src/REveCamera.cxx src/REveVSD.cxx src/REveVSDStructs.cxx DEPENDENCIES diff --git a/graf3d/eve7/inc/LinkDef.h b/graf3d/eve7/inc/LinkDef.h index b8e4754f53e5e..d35f4d9c21b2e 100644 --- a/graf3d/eve7/inc/LinkDef.h +++ b/graf3d/eve7/inc/LinkDef.h @@ -250,4 +250,8 @@ // Tables #pragma link C++ class ROOT::Experimental::REveTableViewInfo; +// Camera +#pragma link C++ class ROOT::Experimental::REveCamera+; +#pragma link C++ enum ROOT::Experimental::REveCamera::ECameraType; + #endif diff --git a/graf3d/eve7/inc/ROOT/REveCamera.hxx b/graf3d/eve7/inc/ROOT/REveCamera.hxx new file mode 100644 index 0000000000000..2672757759973 --- /dev/null +++ b/graf3d/eve7/inc/ROOT/REveCamera.hxx @@ -0,0 +1,91 @@ +// @(#)root/eve7:$Id$ +// Authors: Yuxiao Wang, 2025 + +/************************************************************************* + * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#ifndef ROOT7_REveCamera +#define ROOT7_REveCamera + +#include +#include +#include + +#include + +namespace ROOT { +namespace Experimental { + +class REveCamera : public REveElement +{ +public: + enum ECameraType { + // Perspective + kCameraPerspXOZ, // XOZ floor + kCameraPerspYOZ, // YOZ floor + kCameraPerspXOY, // XOY floor + // Orthographic + kCameraOrthoXOY, // Looking down Z axis, X horz, Y vert + kCameraOrthoXOZ, // Looking along Y axis, X horz, Z vert + kCameraOrthoZOY, // Looking along X axis, Z horz, Y vert + kCameraOrthoZOX, // Looking along Y axis, Z horz, X vert + // Orthographic negative + kCameraOrthoXnOY, // Looking along Z axis, -X horz, Y vert + kCameraOrthoXnOZ, // Looking down Y axis, -X horz, Z vert + kCameraOrthoZnOY, // Looking down X axis, -Z horz, Y vert + kCameraOrthoZnOX // Looking down Y axis, -Z horz, X vert + }; + +private: + ECameraType fType; + std::string fName; + + // Camera transformation matrices + REveTrans fCamBase; // Base camera matrix (main positioning) + REveTrans fCamTrans; + + // Original direction vectors (for Setup) + // REveVector fV1; // Camera direction vector + // REveVector fV2; // Camera up vector + +public: + REveCamera(); + REveCamera(const std::string &name); + virtual ~REveCamera() {} + + void Setup(ECameraType type, const std::string &name, const REveVector &v1, const REveVector &v2); + + ECameraType GetType() const { return fType; } + const std::string &GetCameraName() const { return fName; } + // const REveVector &GetDir() const { return fV1; } + // const REveVector &GetUp() const { return fV2; } + + // void SetDir(const REveVector &v) { fV1 = v; StampObjProps(); } + // void SetUp(const REveVector &v) { fV2 = v; StampObjProps(); } + + // Camera matrix accessors + REveTrans &RefCamBase() { return fCamBase; } + const REveTrans &GetCamBase() const { return fCamBase; } + + REveTrans &RefCamTrans() { return fCamTrans; } + const REveTrans &GetCamTrans() const { return fCamTrans; } + + void SetCamBase(const REveTrans &base) { fCamBase = base; StampObjProps(); } + + // receive mtx from client + void SetCamBaseMtx(const std::vector &arr); + + void BuildRenderData() override{}; + + Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override; +}; + +} // namespace Experimental +} // namespace ROOT + +#endif \ No newline at end of file diff --git a/graf3d/eve7/inc/ROOT/REveManager.hxx b/graf3d/eve7/inc/ROOT/REveManager.hxx index 1913661f649ca..e44accfd42a19 100644 --- a/graf3d/eve7/inc/ROOT/REveManager.hxx +++ b/graf3d/eve7/inc/ROOT/REveManager.hxx @@ -15,7 +15,7 @@ #include #include #include - +#include #include #include "TSysEvtHandler.h" @@ -127,6 +127,7 @@ protected: REveViewerList *fViewers{nullptr}; REveSceneList *fScenes{nullptr}; + REveElement *fCameras{nullptr}; // yuxiao REveScene *fGlobalScene{nullptr}; REveScene *fEventScene{nullptr}; @@ -182,6 +183,7 @@ public: REveSceneList *GetScenes() const { return fScenes; } REveViewerList *GetViewers() const { return fViewers; } + REveElement *GetCameras() const { return fCameras; } //yuxiao REveScene *GetGlobalScene() const { return fGlobalScene; } REveScene *GetEventScene() const { return fEventScene; } diff --git a/graf3d/eve7/inc/ROOT/REveViewer.hxx b/graf3d/eve7/inc/ROOT/REveViewer.hxx index d26a3836dd359..c7a160c7ec8e0 100644 --- a/graf3d/eve7/inc/ROOT/REveViewer.hxx +++ b/graf3d/eve7/inc/ROOT/REveViewer.hxx @@ -18,6 +18,7 @@ namespace ROOT { namespace Experimental { class REveScene; +class REveCamera; // yuxiao //////////////////////////////////////////////////////////////////////////////// /// REveViewer @@ -51,30 +52,13 @@ public: kAxesEdge }; - // For the moment REveCamera is internal class - class REveCamera - { - ECameraType fType; - std::string fName; - REveVector fV2; - REveVector fV1; - - public: - REveCamera() { Setup(kCameraPerspXOZ, "PerspXOZ", REveVector(-1.0, 0.0, 0.0), REveVector(0.0, 1.0, 0.0));} - ~REveCamera() {} - - void Setup(ECameraType type, const std::string& name, REveVector v1, REveVector v2); - - ECameraType GetType() const { return fType; } - - int WriteCoreJson(nlohmann::json &j, Int_t /*rnr_offset*/); - }; - private: REveViewer(const REveViewer&) = delete; REveViewer& operator=(const REveViewer&) = delete; - REveCamera fCamera; + REveCamera* fCamera{0}; + ElementId_t fCameraId{0}; // Reference to standalone REveCamera element. yuxiao + EAxesType fAxesType{kAxesNone}; bool fBlackBackground{false}; @@ -90,8 +74,10 @@ public: virtual void AddScene(REveScene* scene); // XXX Missing RemoveScene() ???? - void SetCameraType(ECameraType t); - ECameraType GetCameraType() const { return fCamera.GetType(); } + // void SetCameraType(ECameraType t); + // ECameraType GetCameraType() const { return fCamera->GetType(); } + void SetCamera(::ROOT::Experimental::REveCamera *cam); + ElementId_t GetCameraId() const { return fCameraId; } // yuxiao void SetAxesType(int); void SetBlackBackground(bool); diff --git a/graf3d/eve7/src/REveCamera.cxx b/graf3d/eve7/src/REveCamera.cxx new file mode 100644 index 0000000000000..1efc5542c0182 --- /dev/null +++ b/graf3d/eve7/src/REveCamera.cxx @@ -0,0 +1,114 @@ +// @(#)root/eve7:$Id$ +// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007, 2018 + +/************************************************************************* + * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#include +#include + +#include + +using namespace ROOT::Experimental; + +//////////////////////////////////////////////////////////////////////////////// +/// Default constructor + +REveCamera::REveCamera() : REveElement("REveCamera") +{ + Setup(kCameraPerspXOZ, "PerspXOZ", REveVector(-1.0, 0.0, 0.0), REveVector(0.0, 1.0, 0.0)); + fCamBase.UnitTrans(); + fCamTrans.UnitTrans(); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Constructor with name + +REveCamera::REveCamera(const std::string &name) : REveElement(name) +{ + Setup(kCameraPerspXOZ, name, REveVector(-1.0, 0.0, 0.0), REveVector(0.0, 1.0, 0.0)); + fCamBase.UnitTrans(); + fCamTrans.UnitTrans(); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Setup camera with type, name, direction and up vectors + +void REveCamera::Setup(ECameraType type, const std::string &name, const REveVector &v1, const REveVector &v2) +{ + fType = type; + fName = name; + // fV1 = v1; + // fV2 = v2; + + // Set up base camera matrix from direction and up vectors + fCamBase.UnitTrans(); + fCamTrans.UnitTrans(); + + // Create a coordinate system from v1 (direction) and v2 (up) + REveVector dir = v1; + dir.Normalize(); + + REveVector up = v2; + up.Normalize(); + + // Right vector = dir × up + REveVector right; + right.fX = dir.fY * up.fZ - dir.fZ * up.fY; + right.fY = dir.fZ * up.fX - dir.fX * up.fZ; + right.fZ = dir.fX * up.fY - dir.fY * up.fX; + right.Normalize(); + + // Recalculate up = right × dir for orthogonality + REveVector newUp; + newUp.fX = right.fY * dir.fZ - right.fZ * dir.fY; + newUp.fY = right.fZ * dir.fX - right.fX * dir.fZ; + newUp.fZ = right.fX * dir.fY - right.fY * dir.fX; + + // Set rotation part of matrix (as row vectors) + Double_t *M = fCamBase.Array(); + M[0] = right.fX; M[4] = right.fY; M[8] = right.fZ; + M[1] = newUp.fX; M[5] = newUp.fY; M[9] = newUp.fZ; + M[2] = dir.fX; M[6] = dir.fY; M[10] = dir.fZ; + + StampObjProps(); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Set camera base matrix from array (called from client via MIR) + +void REveCamera::SetCamBaseMtx(const std::vector &arr) +{ + if (arr.size() == 16) { + fCamBase.SetFromArray(arr.data()); + StampObjProps(); + } +} + +//////////////////////////////////////////////////////////////////////////////// +/// Write core JSON for camera + +Int_t REveCamera::WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) +{ + Int_t ret = REveElement::WriteCoreJson(j, rnr_offset); + + j["fType"] = fType; + j["fName"] = fName; + // j["fV1"] = {fV1.fX, fV1.fY, fV1.fZ}; + // j["fV2"] = {fV2.fX, fV2.fY, fV2.fZ}; + + // Stream both matrices + // Client will read these as fMatrix arrays (16 elements each) + const Double_t *camBaseArr = fCamBase.Array(); + j["camBase"] = std::vector(camBaseArr, camBaseArr + 16); + + const Double_t *camTransArr = fCamTrans.Array(); + j["camTrans"] = std::vector(camTransArr, camTransArr + 16); + + return ret; +} \ No newline at end of file diff --git a/graf3d/eve7/src/REveManager.cxx b/graf3d/eve7/src/REveManager.cxx index e57faf0904099..af518b4352f68 100644 --- a/graf3d/eve7/src/REveManager.cxx +++ b/graf3d/eve7/src/REveManager.cxx @@ -11,6 +11,7 @@ #include +#include #include #include #include @@ -139,9 +140,62 @@ REveManager::REveManager() fWorld->AddElement(fViewers); fScenes = new REveSceneList("Scenes"); - fScenes->IncDenyDestroy(); +fScenes->IncDenyDestroy(); fWorld->AddElement(fScenes); + // -------------------------------- + // Create camera list + // -------------------------------- + fCameras = new REveElement("Cameras", "Camera list"); + fCameras->IncDenyDestroy(); + fWorld->AddElement(fCameras); + + // Create predefined cameras with their view vectors, yuxiao + struct CameraDef { + REveCamera::ECameraType type; + const char* name; + REveVector v1; + REveVector v2; + }; + + CameraDef predefinedCameras[] = { + // Perspective cameras + {REveCamera::kCameraPerspXOZ, "PerspXOZ", + REveVector(-1.0, 0.0, 0.0), REveVector(0.0, 1.0, 0.0)}, + {REveCamera::kCameraPerspYOZ, "PerspYOZ", + REveVector(0.0, -1.0, 0.0), REveVector(1.0, 0.0, 0.0)}, + {REveCamera::kCameraPerspXOY, "PerspXOY", + REveVector(-1.0, 0.0, 0.0), REveVector(0.0, 0.0, 1.0)}, + + // Orthographic cameras + {REveCamera::kCameraOrthoXOY, "OrthoXOY", + REveVector(0.0, 0.0, 1.0), REveVector(0.0, 1.0, 0.0)}, + {REveCamera::kCameraOrthoXOZ, "OrthoXOZ", + REveVector(0.0, -1.0, 0.0), REveVector(0.0, 0.0, 1.0)}, + {REveCamera::kCameraOrthoZOY, "OrthoZOY", + REveVector(-1.0, 0.0, 0.0), REveVector(0.0, 1.0, 0.0)}, + {REveCamera::kCameraOrthoZOX, "OrthoZOX", + REveVector(0.0, -1.0, 0.0), REveVector(1.0, 0.0, 0.0)}, + + // Orthographic negative cameras + {REveCamera::kCameraOrthoXnOY, "OrthoXnOY", + REveVector(0.0, 0.0, -1.0), REveVector(0.0, 1.0, 0.0)}, + {REveCamera::kCameraOrthoXnOZ, "OrthoXnOZ", + REveVector(0.0, 1.0, 0.0), REveVector(0.0, 0.0, 1.0)}, + {REveCamera::kCameraOrthoZnOY, "OrthoZnOY", + REveVector(1.0, 0.0, 0.0), REveVector(0.0, 1.0, 0.0)}, + {REveCamera::kCameraOrthoZnOX, "OrthoZnOX", + REveVector(0.0, 1.0, 0.0), REveVector(1.0, 0.0, 0.0)} + }; + + // Create and add all predefined cameras + for (const auto &camDef : predefinedCameras) { + auto cam = new REveCamera(camDef.name); + cam->Setup(camDef.type, camDef.name, camDef.v1, camDef.v2); + fCameras->AddElement(cam); + std::cout << "camera ID: " << cam->GetElementId() << std::endl; + } + fGlobalScene = new REveScene("Geometry scene"); fGlobalScene->IncDenyDestroy(); fScenes->AddElement(fGlobalScene); diff --git a/graf3d/eve7/src/REveViewer.cxx b/graf3d/eve7/src/REveViewer.cxx index 334d9806bc046..53126c22fb172 100644 --- a/graf3d/eve7/src/REveViewer.cxx +++ b/graf3d/eve7/src/REveViewer.cxx @@ -10,7 +10,7 @@ *************************************************************************/ #include - +#include #include #include #include @@ -129,11 +129,12 @@ void REveViewer::SetBlackBackground(bool x) /// Virtual from REveElement. int REveViewer::WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) { - fCamera.WriteCoreJson(j, rnr_offset); + // fCamera.WriteCoreJson(j, rnr_offset); j["Mandatory"] = fMandatory; j["AxesType"] = fAxesType; j["BlackBg"] = fBlackBackground; + j["fCameraId"] = fCameraId; // yuxiao j["UT_PostStream"] = "UT_EveViewerUpdate"; @@ -171,6 +172,7 @@ void REveViewer::SetMandatory(bool x) /// // Set base vectors of camera base matrix // +/* void REveViewer::SetCameraType(ECameraType cameraType) { switch(cameraType) { @@ -212,33 +214,14 @@ void REveViewer::SetCameraType(ECameraType cameraType) return; } } - +*/ //////////////////////////////////////////////////////////////////////////////// -// -// Set camera base matrix -// -void REveViewer::REveCamera::Setup( ECameraType type, const std::string& name, REveVector v1, REveVector v2) -{ - fType = type; - fName = name; - fV1 = v1; - fV2 = v2; -} +/// Set camera reference by ID, yuxiao -//////////////////////////////////////////////////////////////////////////////// -/// -// Stream camera info -// -int REveViewer::REveCamera::WriteCoreJson(nlohmann::json &j, Int_t /*rnr_offset*/) +void REveViewer::SetCamera(::ROOT::Experimental::REveCamera *cam) { - nlohmann::json out; - out["type"] = fName; - out["V1"] = {fV1.fX, fV1.fY, fV1.fZ}; - out["V2"] = {fV2.fX, fV2.fY, fV2.fZ}; - - j["camera"] = out; - - return 0; + fCameraId = cam ? cam->GetElementId() : 0; + StampObjProps(); } //////////////////////////////////////////////////////////////////////////////// diff --git a/tutorials/visualisation/eve7/jets.C b/tutorials/visualisation/eve7/jets.C index 445acf99eb0e6..357a600d8167a 100644 --- a/tutorials/visualisation/eve7/jets.C +++ b/tutorials/visualisation/eve7/jets.C @@ -10,6 +10,8 @@ #include #include #include +#include +#include namespace REX = ROOT::Experimental; @@ -35,7 +37,19 @@ void makeJets(int N_Jets, REX::REveElement *jetHolder) void jets() { auto eveMng = REX::REveManager::Create(); - + eveMng->AllowMultipleRemoteConnections(false, false); + + auto cam = (REX::REveCamera*)eveMng->FindElementById(8); + // auto camTrans = cam->RefCamTrans(); + REX::REveTrans& camTrans = cam->RefCamTrans(); + + Double_t arr[16] = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1000, -300, 0, 1}; + camTrans.SetFrom(arr); + // auto camTrans1 = cam->RefCamTrans(); + // camTrans1.Print(); + + //eveMng->GetDefaultViewer()->SetCamera(cam); + REX::REveElement *jetHolder = new REX::REveElement("Jets"); eveMng->GetEventScene()->AddElement(jetHolder); makeJets(7, jetHolder); diff --git a/ui5/eve7/controller/GL.controller.js b/ui5/eve7/controller/GL.controller.js index a96086405f497..bca36a3ac05ca 100644 --- a/ui5/eve7/controller/GL.controller.js +++ b/ui5/eve7/controller/GL.controller.js @@ -252,7 +252,22 @@ sap.ui.define([ isEveCameraPerspective: function() { let vo = this.mgr.GetElement(this.eveViewerId); - return vo.camera.type.startsWith("Persp"); + + // try to get camera type from standalone REveCamera element + let camera = this.mgr.GetElement(vo.fCameraId); + if (camera && camera.fType !== undefined) { + // REveCamera::ECameraType: 0-2 are Perspective, 3-8 are Orthographic + return camera.fType < 3; + } + + // Fallback: use nested camera type (backward compatibility) + // return vo.camera.type.startsWith("Persp"); + if (vo.camera && vo.camera.type) { + return vo.camera.type.startsWith("Persp"); + } + + console.warn("GL.controller.isEveCameraPerspective: no camera info found, defaulting to perspective"); + return true; }, switchSingle: function() diff --git a/ui5/eve7/lib/GlViewerRCore.js b/ui5/eve7/lib/GlViewerRCore.js index e9abf2ac505e3..260782c351941 100644 --- a/ui5/eve7/lib/GlViewerRCore.js +++ b/ui5/eve7/lib/GlViewerRCore.js @@ -31,7 +31,7 @@ sap.ui.define([ this.top_path = jsrp.substring(0, jsrp.length - 10); this.eve_path = this.top_path + 'rootui5sys/eve7/'; - this._logLevel = 1; // 0 - error, 1 - warning, 2 - info, 3 - debug + this._logLevel = 3; // 0 - error, 1 - warning, 2 - info, 3 - debug if (this._logLevel > 2) { console.log("GlViewerRCore RQ_Mode:", this.RQ_Mode, "RQ_SSAA:", this.RQ_SSAA, @@ -447,9 +447,24 @@ sap.ui.define([ } }); + // implement the camera control to client side (and look into how to locate the camera) this.controls = new RC.REveCameraControls(this.camera, this.canvas.canvasDOM); this.controls.addEventListener('change', this.render.bind(this)); + // send to server when the client finishes camera setting + this.controls.addEventListener('end', () => { + let eveView = this.controller.mgr.GetElement(this.controller.eveViewerId); + if (eveView && eveView.fCameraId && this.controls.camBaseMtx) { + let arr = Array.from(this.controls.camBaseMtx.elements); + this.controller.mgr.SendMIR("SetCamBaseMtx", eveView.fCameraId, + "ROOT::Experimental::REveCamera", + JSON.stringify(arr)); + if (this._logLevel >= 2) { + console.log("Camera matrix sent to server, ID:", eveView.fCameraId); + } + } + }); + // camera center marker let col = new RC.Color(0.5, 0, 0); const msize = this.RQ_SSAA * 8; // marker size @@ -492,7 +507,7 @@ sap.ui.define([ let sbbox = this.scene_bbox; let posV = new RC.Vector3; posV.subVectors(sbbox.max, this.rot_center); let negV = new RC.Vector3; negV.subVectors(sbbox.min, this.rot_center); - + let extV = new RC.Vector3; extV = negV; extV.negate(); extV.max(posV); let extR = extV.length(); @@ -500,9 +515,53 @@ sap.ui.define([ console.log("GlViewerRenderCore.resetRenderer", sbbox, posV, negV, extV, extR); let eveView = this.controller.mgr.GetElement(this.controller.eveViewerId); - let v1 = eveView.camera.V1; - let v2 = eveView.camera.V2; + // Try to use standalone REveCamera if available + // let cameraId = eveView.fCameraId; + let cameraId = 8; + let camera = null; + let v1, v2; + + if (cameraId) { + camera = this.controller.mgr.GetElement(cameraId); + if (this._logLevel >= 2) { + console.log("GlViewerRCore.resetRenderer: Using standalone camera ID", cameraId); + if (camera) { + console.log(" Camera name:", camera.fName); + // console.log(" Camera fV1:", camera.fV1); + // console.log(" Camera fV2:", camera.fV2); + console.log(" Camera camBase:", camera.camBase); + } + } + } + + // In resetRenderer() + // if (camera && camera.fV1 && camera.fV2) { + // v1 = camera.fV1; + // v2 = camera.fV2; + if (camera && camera.camBase && camera.camBase.length === 16) { + v1 = [camera.camBase[8], camera.camBase[9], camera.camBase[10]]; // forward/direction + v2 = [camera.camBase[4], camera.camBase[5], camera.camBase[6]]; // up + + // Apply camTrans if available + if (camera.camTrans && camera.camTrans.length === 16) { + this.controls.setCamTrans(camera.camTrans); + if (this._logLevel >= 2) { + console.log("GlViewerRCore.resetRenderer: Applied camTrans from REveCamera"); + } + } + + if (this._logLevel >= 2) { + console.log("GlViewerRCore.resetRenderer: Using standalone REveCamera"); + } + } else { + // Fallback to nested camera for backward compatibility + v1 = eveView.camera.V1; + v2 = eveView.camera.V2; + if (this._logLevel >= 1) { + console.log("GlViewerRCore.resetRenderer: Using nested camera (fallback)"); + } + } if (this.camera.isPerspectiveCamera) { @@ -543,7 +602,23 @@ sap.ui.define([ // console.log("resetRenderer 2D scene bbox ex ey", sbbox, ex, ey, ", camera_pos ", posC, ", look_at ", this.rot_center); } - this.controls.setFromBBox(sbbox); + // this.controls.setFromBBox(sbbox); + /* + if (this.camera.isPerspectiveCamera) { + let camTransTest = [1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 1000, -300, 0, 1]; + this.controls.setCamTrans(camTransTest); + console.log("Applied hardcoded camTrans:", camTransTest); + } + */ + if (camera.camTrans && camera.camTrans.length === 16) { + this.controls.setCamTrans(camera.camTrans); + if (this._logLevel >= 2) { + console.log("GlViewerRCore.resetRenderer: Applied camTrans from REveCamera"); + } + } this.controls.update(); } diff --git a/ui5/eve7/lib/RenderCore.js b/ui5/eve7/lib/RenderCore.js index 3ddf59241a5ac..36b45492c3b5d 100644 --- a/ui5/eve7/lib/RenderCore.js +++ b/ui5/eve7/lib/RenderCore.js @@ -1,9 +1,9 @@ // Standard import from ROOT build -export * from '../rcore/REveRenderCore-min.mjs'; -export const REveShaderPath = "rcore/shaders/"; -export const REveDevelMode = false; +// export * from '../rcore/REveRenderCore-min.mjs'; +// export const REveShaderPath = "rcore/shaders/"; +// export const REveDevelMode = false; // Development import from a RenderCore checkout in RC directory -// export * from '../RC/src/contrib/REveRenderCore.js'; -// export const REveShaderPath = "RC/src/shaders/"; -// export const REveDevelMode = true; \ No newline at end of file +export * from '../RC/src/contrib/REveRenderCore.js'; +export const REveShaderPath = "RC/src/shaders/"; +export const REveDevelMode = true;