Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.vimx #18

Open
24 of 50 tasks
mavimaec opened this issue Jul 19, 2023 · 6 comments
Open
24 of 50 tasks

.vimx #18

mavimaec opened this issue Jul 19, 2023 · 6 comments
Assignees

Comments

@mavimaec
Copy link

mavimaec commented Jul 19, 2023

Goal

Implement a VIMX file which can be consumed by the VIM webgl viewer to render the geometry in a manner which improves the time to first presentation.

Phase 1

  • VIMX proof-of-concept

    • Give it an extension: .vimx
    • Add new attribute for per-instance world space axis-aligned bounding boxes (AABBs)
    • Update the index attribute with a singular world space AABB for the whole model (for camera framing purposes).
    • Define instance transforms to the top-level
    • Modify chunk layout to use unified vertex and index buffer (resume usage of Mesh and Submesh)
  • VIMX vim-format repository integration

    • Refactor Vim.BFast implementation to improve ergonomics
    • In the src/cs/g3d folder:
      • Add the C# project Vim.G3d.Next which contains the refactored code for attributes and their code generation
      • Add the C# project Vim.G3d.Next.Tests to test the implementation
    • In the src/cs/vim folder:
      • Add the C# project Vim.Format.Vimx which is responsible for reading and writing VIMX files
        • The VIMX header should designate itself as a "vimx=0.1.0" (to make a clear distinction between a VIM and a VIMX)
        • The remainder of the file header should be similar to the original VIM format.
        • Implement a bucketing scheme which enables the batch download of meshes that are members of the same category (or some other bucketing heuristic) to reduce the number of queries (and to improve the loading time).
      • Adapt Vim.Format with new implementations of bfast/g3d.
        • Replace old Vim.BFast with new implementation
          • Update vim.format repo with new Vim.BFast implementation
          • Update vimaec repo with new Vim.BFast implementation
            • Ensure Vim.Migration project works correctly
        • Replace old Vim.G3d with new implementation
        • Update the C# project Vim.Format.Tests to test the implementation of VIMX
          • In the data folder, add a few .vimx files to test the implementation.
  • VIM to VIMX conversion via the VIM Tool

    .\Vim.VimTool.exe convert-vimx
      --input "path/to/file.vim"      # input VIM file
      --output "path/to/file.vimx"    # output VIMX file
      --log "path/to/file.log"        # log filepath
  • Refactor viewer selection to enable selecting objects in the VIMx

    • A VIM file with missing entities may have selection disabled
    • VIMX always has selection enabled (because it can base the element selection on the "group" (aka element index))
  • VIMX URL integration into PowerBI Reports

    • Distinguish between a VIM file and a VIMx file and cache the result, presumably by investigating the VIM header
    • Normalize PBI loading pipeline between VIM and VIMx
    • Resolve "initially loaded set" caching
    • Re-enable all features for VIMx in PowerBI + handle special cases (widget toggles)
      • Selection outline
      • Coloring
      • Isolation
      • Back-port refactoring with normal VIM
    • Test with large models
      • Test Hexagon big model as .vimx in PBI
      • Test TG Gallagher big model as .vimx in PBI
      • Test Whiteleys as .vimx in PBI
      • Test NBK as .vimx in PBI
    • Manual tests (validate that performance is adequate)
  • VIMX integration into Vim.Glue

    • Also converts the VIM to a VIMX and uploads it to the storage account
  • VIMX integration into VIM Cloud

    • During the azure batch conversion process, if the VIM file's corresponding VIMX file does not already exist, convert the input VIM file to a VIMX and upload it to the org's storage account.
      • This VIMX file should remain hidden from the user and should not count against their storage quota
      • Upon deletion of the original VIM file, the dependent VIMX file is also deleted.
    • Use the VIMX's URL in the PowerBI report.

Phase 2

  • Complete VIMX transition:
    • VIM WebGL Component
    • VIM Revit Exporter
    • VIM Desktop App
      • Implies updating the C++ format...
    • VIM 3dsMax Importer
    • VIM Tool (vim to sql)
    • VIM Cloud as natively supported format
@mavimaec mavimaec changed the title 🐄 VIM2 Attribute Refactoring 🐉 VIM2 Jul 19, 2023
@mavimaec mavimaec changed the title 🐉 VIM2 🐉 SPIKE: VIM2 Jul 19, 2023
@mavimaec mavimaec changed the title 🐉 SPIKE: VIM2 🐄 SPIKE: VIM2 Jul 19, 2023
@mavimaec mavimaec changed the title 🐄 SPIKE: VIM2 🐘 SPIKE: VIM2 Jul 19, 2023
@mavimaec mavimaec changed the title 🐘 SPIKE: VIM2 🐘 VIM Sidecar Aug 14, 2023
@mavimaec mavimaec changed the title 🐘 VIM Sidecar 🐘 VIM Sidecar (.vimx) Aug 14, 2023
@mavimaec mavimaec changed the title 🐘 VIM Sidecar (.vimx) 🐘 .vimx Sep 11, 2023
@1duckking1
Copy link

Where is VimTool.exe?

@mavimaec
Copy link
Author

mavimaec commented Nov 6, 2023

Where is VimTool.exe?

Hi, the VIM Tool executable is a paid enterprise product. If your organization is an enterprise customer of VIM, please contact us through VIM Cloud. You can sign into VIM Cloud at https://www.vimaec.com

@1duckking1
Copy link

Is there any other way to convert to VIMX?

@mavimaec
Copy link
Author

mavimaec commented Nov 7, 2023

Is there any other way to convert to VIMX?

The VIMX file format is currently under active development and testing. Our current plan is to implement the VIM to VIMX file conversion process in the VIM Tool command line executable. Once the implementation is complete, we intend on documenting the VIMX file format and publishing the source code for reading and writing VIMX files in the vim-format open source repository.

Out of curiosity, what your use case for the VIM Tool and the VIMX file format?

@mavimaec
Copy link
Author

mavimaec commented Nov 7, 2023

Our company is going to choose a high performance scheme to view the bim model. Recently, we are doing testing and research. We are interested in this.

Thanks! I'd be happy to hear about the specifics of your use case and what kind of model scale you're looking at.

Can you try the Vimx converter? Or will rvt plug-in be opened to convert Vimx later? I want to try our model

We're currently performing some internal tests of the VIMX file format, which expands on our original VIM file format. Our current goal is to validate the performance improvements of VIMX in the context of our PowerBI custom visual. We are not yet ready to release VIMX out into the wild before we complete these tests.

In the meantime, have you tried using the VIM file format? It may already satisfy your performance needs! You can sign up to https://www.vimaec.com, and download our installer which installs a Revit plugin to export VIM files. You can view these files in the VIM Desktop App for Windows (which also comes with the installer), and you can upload these files to VIM Cloud to view them in our WebGL viewer (the core code of which is being maintained in this repository), or create PowerBI reports for further analysis.

@mavimaec
Copy link
Author

mavimaec commented Nov 7, 2023

If you want to get your hands dirty with the VIM webgl viewer, you can try out the live JSFiddles we posted here: https://github.com/vimaec/vim-webgl-viewer?tab=readme-ov-file#live-demo

@mavimaec mavimaec changed the title 🐘 .vimx .vimx Jan 12, 2024
@mavimaec mavimaec transferred this issue from vimaec/vim-webgl-viewer Dec 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants