Opened 14 months ago
Closed 14 months ago
#15934 closed defect (fixed)
Saved GLTF is shifted relative to original model position
Reported by: | Owned by: | Tom Goddard | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Input/Output | Version: | |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: macOS-14.6.1-arm64-arm-64bit ChimeraX Version: 1.8 (2024-06-10 23:15:52 UTC) Description Saving GLTF for a model translated in the scene and using "center false" produces a file that does not align with the original when opened in ChimeraX. It seems to apply the translation twice. Log: UCSF ChimeraX version: 1.8 (2024-06-10) © 2016-2024 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > shape rectangle > move x 2 models #1 > save test.glb center false > open test.glb Opened glTF file containing 1 scenes, 1 nodes, 1 meshes > view OpenGL version: 4.1 Metal - 88.1 OpenGL renderer: Apple M1 Max OpenGL vendor: Apple Python: 3.11.4 Locale: UTF-8 Qt version: PyQt6 6.6.1, Qt 6.6.1 Qt runtime version: 6.6.3 Qt platform: cocoa Hardware: Hardware Overview: Model Name: MacBook Pro Model Identifier: MacBookPro18,2 Model Number: MK1H3LL/A Chip: Apple M1 Max Total Number of Cores: 10 (8 performance and 2 efficiency) Memory: 32 GB System Firmware Version: 10151.140.19 OS Loader Version: 10151.140.19 Software: System Software Overview: System Version: macOS 14.6.1 (23G93) Kernel Version: Darwin 23.6.0 Time since boot: 8 days, 21 hours, 32 minutes Graphics/Displays: Apple M1 Max: Chipset Model: Apple M1 Max Type: GPU Bus: Built-In Total Number of Cores: 32 Vendor: Apple (0x106b) Metal Support: Metal 3 Displays: Color LCD: Display Type: Built-in Liquid Retina XDR Display Resolution: 3456 x 2234 Retina Main Display: Yes Mirror: Off Online: Yes Automatically Adjust Brightness: No Connection Type: Internal Installed Packages: alabaster: 0.7.16 alphashape: 1.3.1 appdirs: 1.4.4 appnope: 0.1.4 asttokens: 2.4.1 Babel: 2.15.0 beautifulsoup4: 4.12.3 blockdiag: 3.0.0 blosc2: 2.0.0 build: 1.2.1 certifi: 2023.11.17 cftime: 1.6.4 charset-normalizer: 3.3.2 ChimeraX-AddCharge: 1.5.17 ChimeraX-AddH: 2.2.6 ChimeraX-AlignmentAlgorithms: 2.0.2 ChimeraX-AlignmentHdrs: 3.5 ChimeraX-AlignmentMatrices: 2.1 ChimeraX-Alignments: 2.12.7 ChimeraX-AlphaFold: 1.0 ChimeraX-AltlocExplorer: 1.1.1 ChimeraX-AmberInfo: 1.0 ChimeraX-Arrays: 1.1 ChimeraX-Atomic: 1.57.1 ChimeraX-AtomicLibrary: 14.0.6 ChimeraX-AtomSearch: 2.0.1 ChimeraX-AxesPlanes: 2.4 ChimeraX-BasicActions: 1.1.2 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 2.4.6 ChimeraX-BondRot: 2.0.4 ChimeraX-BugReporter: 1.0.1 ChimeraX-BuildStructure: 2.12.1 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.2.7 ChimeraX-ButtonPanel: 1.0.1 ChimeraX-CageBuilder: 1.0.1 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.4 ChimeraX-ChangeChains: 1.1 ChimeraX-CheckWaters: 1.4 ChimeraX-ChemGroup: 2.0.1 ChimeraX-Clashes: 2.2.4 ChimeraX-ColorActions: 1.0.5 ChimeraX-ColorGlobe: 1.0 ChimeraX-ColorKey: 1.5.6 ChimeraX-CommandLine: 1.2.5 ChimeraX-ConnectStructure: 2.0.1 ChimeraX-Contacts: 1.0.1 ChimeraX-Core: 1.8 ChimeraX-CoreFormats: 1.2 ChimeraX-coulombic: 1.4.3 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-CrystalContacts: 1.0.1 ChimeraX-DataFormats: 1.2.3 ChimeraX-Dicom: 1.2.4 ChimeraX-DiffPlot: 1.0 ChimeraX-DistMonitor: 1.4.2 ChimeraX-DockPrep: 1.1.3 ChimeraX-Dssp: 2.0 ChimeraX-EMDB-SFF: 1.0 ChimeraX-ESMFold: 1.0 ChimeraX-FileHistory: 1.0.1 ChimeraX-FunctionKey: 1.0.1 ChimeraX-Geometry: 1.3 ChimeraX-gltf: 1.0 ChimeraX-Graphics: 1.1.1 ChimeraX-Hbonds: 2.4 ChimeraX-Help: 1.2.2 ChimeraX-HKCage: 1.3 ChimeraX-IHM: 1.1 ChimeraX-ImageFormats: 1.2 ChimeraX-IMOD: 1.0 ChimeraX-IO: 1.0.1 ChimeraX-ItemsInspection: 1.0.1 ChimeraX-IUPAC: 1.0 ChimeraX-Label: 1.1.10 ChimeraX-ListInfo: 1.2.2 ChimeraX-Log: 1.1.6 ChimeraX-LookingGlass: 1.1 ChimeraX-Maestro: 1.9.1 ChimeraX-Map: 1.2 ChimeraX-MapData: 2.0 ChimeraX-MapEraser: 1.0.1 ChimeraX-MapFilter: 2.0.1 ChimeraX-MapFit: 2.0 ChimeraX-MapSeries: 2.1.1 ChimeraX-Markers: 1.0.1 ChimeraX-Mask: 1.0.2 ChimeraX-MatchMaker: 2.1.3 ChimeraX-MCopy: 1.0 ChimeraX-MDcrds: 2.7.1 ChimeraX-MedicalToolbar: 1.0.3 ChimeraX-Meeting: 1.0.1 ChimeraX-MLP: 1.1.1 ChimeraX-mmCIF: 2.14.1 ChimeraX-MMTF: 2.2 ChimeraX-Modeller: 1.5.17 ChimeraX-ModelPanel: 1.5 ChimeraX-ModelSeries: 1.0.1 ChimeraX-Mol2: 2.0.3 ChimeraX-Mole: 1.0 ChimeraX-Morph: 1.0.2 ChimeraX-MouseModes: 1.2 ChimeraX-Movie: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nifti: 1.2 ChimeraX-NIHPresets: 1.1.18 ChimeraX-NMRSTAR: 1.0.2 ChimeraX-NRRD: 1.2 ChimeraX-Nucleotides: 2.0.3 ChimeraX-OpenCommand: 1.13.5 ChimeraX-PDB: 2.7.5 ChimeraX-PDBBio: 1.0.1 ChimeraX-PDBLibrary: 1.0.4 ChimeraX-PDBMatrices: 1.0 ChimeraX-PickBlobs: 1.0.1 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.1.1 ChimeraX-PubChem: 2.2 ChimeraX-ReadPbonds: 1.0.1 ChimeraX-Registration: 1.1.2 ChimeraX-RemoteControl: 1.0 ChimeraX-RenderByAttr: 1.4.1 ChimeraX-RenumberResidues: 1.1 ChimeraX-ResidueFit: 1.0.1 ChimeraX-RestServer: 1.2 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 4.0 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 ChimeraX-SaveCommand: 1.5.1 ChimeraX-SchemeMgr: 1.0 ChimeraX-SDF: 2.0.2 ChimeraX-Segger: 1.0 ChimeraX-Segment: 1.0.1 ChimeraX-Segmentations: 3.0.15 ChimeraX-SelInspector: 1.0 ChimeraX-SeqView: 2.11.2 ChimeraX-Shape: 1.0.1 ChimeraX-Shell: 1.0.1 ChimeraX-Shortcuts: 1.1.1 ChimeraX-ShowSequences: 1.0.3 ChimeraX-SideView: 1.0.1 ChimeraX-Smiles: 2.1.2 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.16.5 ChimeraX-STL: 1.0.1 ChimeraX-Storm: 1.0 ChimeraX-StructMeasure: 1.2.1 ChimeraX-Struts: 1.0.1 ChimeraX-Surface: 1.0.1 ChimeraX-SwapAA: 2.0.1 ChimeraX-SwapRes: 2.5 ChimeraX-TapeMeasure: 1.0 ChimeraX-TaskManager: 1.0 ChimeraX-Test: 1.0 ChimeraX-TetraScapeCommand: 0.1 ChimeraX-Toolbar: 1.1.2 ChimeraX-ToolshedUtils: 1.2.4 ChimeraX-Topography: 1.0 ChimeraX-ToQuest: 1.0 ChimeraX-Tug: 1.0.1 ChimeraX-UI: 1.39.1 ChimeraX-uniprot: 2.3 ChimeraX-UnitCell: 1.0.1 ChimeraX-ViewDockX: 1.4.3 ChimeraX-VIPERdb: 1.0 ChimeraX-Vive: 1.1 ChimeraX-VolumeMenu: 1.0.1 ChimeraX-vrml: 1.0 ChimeraX-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0.2 ChimeraX-WebServices: 1.1.4 ChimeraX-Zone: 1.0.1 click: 8.1.7 click-log: 0.4.0 colorama: 0.4.6 comm: 0.2.2 contourpy: 1.2.1 cxservices: 1.2.2 cycler: 0.12.1 Cython: 3.0.10 debugpy: 1.8.1 decorator: 5.1.1 docutils: 0.20.1 executing: 2.0.1 filelock: 3.13.4 fonttools: 4.53.0 funcparserlib: 2.0.0a0 glfw: 2.7.0 grako: 3.16.5 h5py: 3.11.0 html2text: 2024.2.26 idna: 3.7 ihm: 1.0 imagecodecs: 2024.1.1 imagesize: 1.4.1 ipykernel: 6.29.2 ipython: 8.21.0 ipywidgets: 8.1.3 jedi: 0.19.1 jinja2: 3.1.4 jupyter-client: 8.6.0 jupyter-core: 5.7.2 jupyterlab-widgets: 3.0.11 kiwisolver: 1.4.5 line-profiler: 4.1.2 lxml: 5.2.1 lz4: 4.3.3 MarkupSafe: 2.1.5 matplotlib: 3.8.4 matplotlib-inline: 0.1.7 msgpack: 1.0.8 nest-asyncio: 1.6.0 netCDF4: 1.6.5 networkx: 3.3 nibabel: 5.2.0 nptyping: 2.5.0 numexpr: 2.10.0 numpy: 1.26.4 openvr: 1.26.701 packaging: 23.2 ParmEd: 4.2.2 parso: 0.8.4 pep517: 0.13.1 pexpect: 4.9.0 pillow: 10.3.0 pip: 24.0 pkginfo: 1.10.0 platformdirs: 4.2.2 prompt-toolkit: 3.0.47 psutil: 5.9.8 ptyprocess: 0.7.0 pure-eval: 0.2.2 py-cpuinfo: 9.0.0 pycollada: 0.8 pydicom: 2.4.4 pygments: 2.17.2 pynmrstar: 3.3.2 pynrrd: 1.0.0 PyOpenGL: 3.1.7 PyOpenGL-accelerate: 3.1.7 pyopenxr: 1.0.3401 pyparsing: 3.1.2 pyproject-hooks: 1.1.0 PyQt6-commercial: 6.6.1 PyQt6-Qt6: 6.6.3 PyQt6-sip: 13.6.0 PyQt6-WebEngine-commercial: 6.6.0 PyQt6-WebEngine-Qt6: 6.6.3 python-dateutil: 2.9.0.post0 pytz: 2024.1 pyzmq: 26.0.3 qtconsole: 5.5.1 QtPy: 2.4.1 RandomWords: 0.4.0 requests: 2.31.0 Rtree: 1.1.0 scipy: 1.13.0 setuptools: 69.5.1 setuptools-scm: 8.0.4 sfftk-rw: 0.8.1 shapely: 2.0.2 six: 1.16.0 snowballstemmer: 2.2.0 sortedcontainers: 2.4.0 soupsieve: 2.5 sphinx: 7.2.6 sphinx-autodoc-typehints: 2.0.1 sphinxcontrib-applehelp: 1.0.8 sphinxcontrib-blockdiag: 3.0.0 sphinxcontrib-devhelp: 1.0.6 sphinxcontrib-htmlhelp: 2.0.5 sphinxcontrib-jsmath: 1.0.1 sphinxcontrib-qthelp: 1.0.7 sphinxcontrib-serializinghtml: 1.1.10 stack-data: 0.6.3 superqt: 0.6.3 tables: 3.8.0 tcia-utils: 1.5.1 tifffile: 2024.1.30 tinyarray: 1.2.4 tornado: 6.4.1 traitlets: 5.14.2 trimesh: 4.0.8 typing-extensions: 4.12.2 tzdata: 2024.1 urllib3: 2.2.1 wcwidth: 0.2.13 webcolors: 1.13 wheel: 0.43.0 wheel-filename: 1.4.1 widgetsnbextension: 4.0.11
Change History (2)
comment:1 by , 14 months ago
Component: | Unassigned → Input/Output |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Saved GLTF is shifted relative to original model position |
comment:2 by , 14 months ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Fixed.
The ChimeraX position matrix was being applied both to the GLTF Mesh instance and the Node that contained the mesh due to the code that handle instancing forgetting to check if there was more than 1 instance (in which case the node gets the identity position).
Surprised no one noticed this. If a few models were shifted by different amounts they would not preserve the original alignment. I guess that case is rare.