Powerful, easy to use, and portable visualization toolkit for mixed 3D and 2D content

Related tags

Graphics scenepic
Overview

ScenePic

© Microsoft 2021

Primary Contact: [email protected]

Build Status

Getting Started

To look at some examples and browse the documentation, visit our website:

API Documentation + Demos

We currently support Python and C++:

Python

We provide up-to-date Python wheels via PyPi:

pip install scenepic

If you want to build the library yourself (e.g. for development reasons) can clone the repository and follow most of the instructions to build the c++ client library, but then run

python setup.py develop

which will then build and install the library locally.

For a quick tutorial, take a look at getting_started.py.

For a more extensive tutorial, install Python and Jupyter, and open the python_examples/tutorial.ipynb notebook. This tutorial also demonstrates the use of ScenePic within the interactive Jupyter notebook environment.

A similar example is given in python_examples/getting_started.ipynb.

Note: you may need to set the NotebookApp.iopub_data_rate_limit setting in jupyter to prevent an IOPub error. To do this, call jupyter notebook --generate-config to generate a config file, and then edit the appropriate line to increase the value until it works.

We provide a website with full Python API documentation here

C++

ScenePic is fully compatible with CMake FetchContent, and we encourage users to include the library in their projects via that mechanism. Alternatively, you can follow the instructions below to build the client library directly.

To see examples of how to use the library from C++ look at the tutorial. You can find the API documentation here

Introduction

All platforms have good support for 2D images, with well-recognized formats such as PNG and JPEG that can be viewed out of the box (no installation) and shared trivially.

However, while many formats exist for 3D data, none are well-supported without installation of tools such as MeshLab, Blender, etc.

ScenePic was created for 3D computer vision researchers such as those working on HoloLens and Mesh at Microsoft. It was designed to be a lightweight, reuseable 3D visualization library, with the following desiderata in mind:

  • Make experimentation with 3D data near effortless
  • Incredibly easy to create and share 3D results
    • zero-install sharing of detailed 3D results using HTML
    • based on modern web standards so usable with any modern browser (tested in Edge, FireFox and Chrome)
    • embeddable in other HTML documents
  • Performant
    • based on WebGL
  • High quality visuals
  • Works both offline or interactively in client-server setup
  • Simple, clean API
    • friendly Python front-end
    • basic mesh json file format
    • other language front ends easy to add

An example render:

Example Render

Here is an animation of the Getting Started tutorial ( Python C++ ):

Getting Started

Architecture

The core ScenePic library is written in TypeScript and based on WebGL. This is compiled down to dist/scenepic.min.js which is a 'minified' JavaScript library that can be loaded in HTML pages to enable ScenePic to display data.

The core API for ScenePic is a JSON-based scripting file format. The simplified architecture diagram below illustrates how these scripts are used to define a Scene which is the top-level object in ScenePic. A Scene can contain multiple Canvases (3D drawing canvases), Images, and TextPanels. Each Canvas can contain multiple Frames. Frames comprise multiple Meshes, and Meshes can be reused across different Frames and Canvases. Meshes are basically triangle meshes, comprising flat vertex and triangle buffers. Each Mesh has an optional Image associated for texturing purposes. Images can also be displayed as flat 2D Displayed Images.

ScenePic Anatomy

However, most users will not need interact with ScenePic's core API and scripting language directly. Instead they will use one of the client-language front end libraries to easily generate ScenePic JSON scripts. Currently supported are C++ and Python.

Expected Usage

The main branch of the ScenePic git repository will be kept up-to-date with the latest version. We highly recommend, where possible, using the binary builds we provide. That said, the library is FetchContent compatible, and can be easily included into C++ projects where desired.

Using the HTML Client

ScenePic UI

A ScenePic HTML page will look something like the image above. This example shows four Canvas objects, each of which contains several Frame objects (refering under the hood to a set of Mesh objects).

The UI supports standard 3D mouse controls (drag to rotate, shift-drag to translate in xy, mousewheel to translate in z) to move the viewport camera. On touch screens: single finger to rotate, two fingers to translate in xyz. You can slow any of the mouse controls by holding down the Alt key. If you accidentally transform the camera too wildly, you can reset by pressing 'r'.

In the top right of each canvas a Layer control will appear. This allows the user to toggle certain layers of meshes on and off interactively.

Each Frame for a 3D canvas has an associated Focus Point - a 3D location about which the camera rotates. You can view the Focus Point by holding down the '``' (backtick) key, and while holding this down it can be translated using the mouse. If you press 'l' then the camera is 'locked' to the focus point in xy, though you can still rotate and translate in z. Locking to the focus point is particularly useful to center useful content in animations where the focus point can be different in each frame. You can also toggle the camera automatically orbiting the focus point by pressing '\'.

For Scene objects that contain many frames, you can control animation by pressing the spacebar to play/pause or by using the playback control widget. You can also use the scrollbar to select different frames.

You can programmatically link all input events across multiple Canvases by using scenepic.py/Scene/link_canvas_events().

Building ScenePic core library from source

The core library portion of ScenePic is written in TypeScript which needs compiling to JavaScript.

Pre-requisites (install in order)

  • Node.js (JavaScript outside the browser)

    https://nodejs.org/

  • Install node_module dependencies locally

    From repository root folder:

    npm install

Build

Run commands from root folder. Builds output to the dist folder.

  • Build: compiles the typescript, packages all dependencies, and minifies.

    npm run build

C++ Client Build How-To

In order to build the C++ client from source you will need to first install a few dependencies:

Doxygen (optional)

If you want to build the documentation, you will need to download and install Doxygen. You can download and install the latest version of doxygen here

If you are on Ubuntu and want to build the documentation, you should run:

sudo apt-get install doxygen

(or equivalent, e.g. brew install doxygen on Mac) to install the Doxygen documentation creation tool.

CMake

The C++ build makes use of the CMake cross-platform build system. You can find instructions on how to set up CMake for your platform here. CMake is a meta-build system, which will create a platform-appropriate build setup based upon the files which we have provided in the project (e.g. makefiles for *nix, Visual Studio project files for Windows). We require a minimum version of 3.15. We also require a C++ 14 compliant toolchain. One CMake is installed you should navigate to the cloned repository and run the following commands:

mkdir build
cd build
cmake ..
cmake --build . --config Debug --target cpp

CMake will attempt to find the dependencies on your system, and will tell you if it is unable to find something, in which case you can manually point it at the correct location. You may find it easier to use a visual CMake configuration editor (CMake GUI ships with the Windows distributable, and there is CMake Curses for *nix) to customize the build, for example by disabling the documentation or Python build subsystems. Once you have successfully built the library, you can run the tests in the following fashion from the build directory:

ctest -C Debug

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Comments
  • numpy 1.23 breaks scenepick

    numpy 1.23 breaks scenepick

    Update to numpy==1.23.0 breaks scenepic 1.0.8 (on Windows and Ubuntu).

    Reproduced by using a reduced jelly example:

    import scenepic as sp
    import numpy as np
    
    scene = sp.Scene()
    canvas = scene.create_canvas_3d(width=700, height=700)
    
    jelly_mesh = sp.load_obj(r"C:\Users\tabaltru\Downloads\jelly.obj")
    texture = scene.create_image("texture")
    texture.load(r"C:\Users\tabaltru\Downloads\jelly.png")
    
    base_mesh = scene.create_mesh("jelly_base")
    base_mesh.texture_id = texture.image_id
    base_mesh.use_texture_alpha = True
    base_mesh.add_mesh(jelly_mesh)
    
    positions = jelly_mesh.positions.copy()
    mesh_update = scene.update_mesh_without_normals("jelly_base", positions)
    

    Leads to the following error:

    Exception has occurred: TypeError
    update_mesh_without_normals(): incompatible function arguments. The following argument types are supported:
        1. (self: scenepic._scenepic.Scene, base_mesh_id: str, positions: numpy.ndarray[numpy.float32[m, 3], flags.c_contiguous], mesh_id: str = '') -> scenepic._scenepic.MeshUpdate
    
    Invoked with: <scenepic._scenepic.Scene object at 0x000001FB7FD8ECB0>, 'jelly_base', array([], shape=(0, 3), dtype=float32)
      File "C:\code\mrai.moai\moai\sampling\scenepic_test.py", line 17, in <module>
        mesh_update = scene.update_mesh_without_normals("jelly_base", positions)
    

    Tried in a clean conda environment both with numpy==1.22.0 and numpy==1.23.0 with only the latter breaking.

    opened by TadasBaltrusaitis 9
  • Jupyter examples with Visual Studio Code

    Jupyter examples with Visual Studio Code

    Hi, Thanks for releasing this great library!

    I am using Jupyter Notebooks in Visual Studio Code. When I run the "getting_started.ipynb" in python_examples, the final line of code

    # display the scene in Jupyter
    scene
    

    does not show anything in the output cell in Visual Studio Code Notebook. What is the expected behavior and/or best practices of using scenepic with Jupyter in VS Code? Thanks a lot!

    bug 
    opened by pableeto 3
  • Support for rendering large point clouds

    Support for rendering large point clouds

    Hi,

    This seems like a great visualization tool for 3D problems! It would be nice to have some support for rendering large colored and lit point clouds. I tried adding spheres to a scene (one per point) but this slowed down very quickly for even a moderately large number of spheres (~10-50k). It would be nice to have support for rendering very large point clouds!

    question 
    opened by fwilliams 3
  • Python API docs missing some functions

    Python API docs missing some functions

    opened by timhutton 2
  • Add support for Apple Silicon chip

    Add support for Apple Silicon chip

    Thanks for the package, however I'm unable to use this on Mac M1 as there are no wheels for for the Apple Silicon chip. Please consider adding support for apple silicon chips.

    bug 
    opened by DonJayamanne 2
  • Bump minimist from 1.2.5 to 1.2.6

    Bump minimist from 1.2.5 to 1.2.6

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 2
  • Issue on linux in scenepic 1.0.9

    Issue on linux in scenepic 1.0.9

    scenepic 1.0.9 seems to fix all issues on windows, but on linux I get the following error:

      File ".../something.py", line 6, in <module>
        import scenepic
      File ".../site-packages/scenepic/__init__.py", line 36, in <module>
        from . import _scenepic
    ImportError: .../site-packages/scenepic/_scenepic.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN8scenepic13LayerSettings15NO_RENDER_ORDERE
    
    opened by friggog 1
  • Bump npm from 8.2.0 to 8.11.0

    Bump npm from 8.2.0 to 8.11.0

    Bumps npm from 8.2.0 to 8.11.0.

    Changelog

    Sourced from npm's changelog.

    v8.11.0 (2022-05-25)

    Features

    Bug Fixes

    Documentation

    Dependencies

    v8.10.0 (2022-05-11)

    Features

    Bug Fixes

    Dependencies

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump cached-path-relative from 1.0.2 to 1.1.0

    Bump cached-path-relative from 1.0.2 to 1.1.0

    Bumps cached-path-relative from 1.0.2 to 1.1.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Is it able to update vertex color for key frame?

    Is it able to update vertex color for key frame?

    Hi, I am using scenepic for visualizing and debugging my project, it is super cool! Currently, I would like to visualize some error maps onto a mesh sequence via heat maps. However I found either update_mesh_without_normals() or update_mesh() has no interface for changing per-vertex color. Are there other ways to update per-vertex color for keyframes? Thanks a lot!

    enhancement 
    opened by pableeto 1
  • Support wasdqe keyboard shortcuts for translating the camera

    Support wasdqe keyboard shortcuts for translating the camera

    Have a toggle keypress (e.g."g") to enter "game mode" where:

    • w/s/a/d/q/e = translate camera forward/backward/left/right/down/up
    • mouse movement (with no clicking required) is captured and turned into camera rotation about current camera position

    You can then toggle out again into standard camera mode.

    enhancement 
    opened by jamiesho 1
  • Toggle layer visibility with a keyboard shortcut

    Toggle layer visibility with a keyboard shortcut

    Having the ability to turn on/off the visibility of a given layer within a canvas is extremely useful. However, one has to click the checkbox with a mouse pointer, which gets a bit tedious especially when one wants to repeatedly toggle the visibility of a layer (e.g. to visually compare it to the layer below). It would be very convenient to have keyboard shortcuts support for this action, e.g. CMD/CTRL + <layer_id>.

    opened by bednarikjan 0
  • ScenePic doesn't show output in Colab

    ScenePic doesn't show output in Colab

    ScenePic works great with Jupyter notebook for visualizing the results of a cell just by writing scene. However, this does not seem to work with Google Colab, see this example.

    The scenes do get created, but nothing is shown in the cell output for scene.

    import scenepic as sp
    
    scene = sp.Scene()
    scene.create_canvas_3d()
    
    # This doesn't work: nothing shows in cell output.
    scene
    

    Strangely a workaround of saving the scene to HTML and then displaying that does work. But it would be great to fix the regular behaviour.

    import IPython
    
    # This works, but I find it fails for large scenes.
    scene.save_as_html("scenepic.html")
    IPython.display.HTML(filename="scenepic.html")
    
    bug 
    opened by errollw 3
  • Camera Space Labels are hard to use

    Camera Space Labels are hard to use

    Labels in camera space are difficult to use (bouncing up and down, hard to figure out what 3D position translates to a 2D position in the camera plane, etc.). We need a different method of placing 3D labels in camera space that makes them easier to use and thus more useful.

    enhancement 
    opened by matajoh 0
  • Improvements to moving focus point

    Improvements to moving focus point

    The caps lock functionality for moving the focus point is not working reliably (only tested recently on mac chrome and safari), and was never particularly intuitive.

    Fixing the existing functionality and then working on improvements would be fantastic. E.g. hit testing a mouse click to put the focus point to either the click or the centre of the mesh being clicked.

    bug enhancement 
    opened by jamiesho 0
  • Touch controls

    Touch controls

    There are some functionality gaps on mobile/tablets:

    • Multi-touch rotate
    • A way to reset the camera (double tap?)

    Basically, need to ensure that you can do (almost) anything with multi-touch without access to a keyboard.

    enhancement 
    opened by matajoh 0
Releases(v1.0.16)
  • v1.0.16(Nov 11, 2022)

    Point release fixing an issue with Jupyter rendering order.

    Previously, when a Jupyter notebook containing Scenepic cells was loaded after having been saved, the outputs would appear out of order within the notebook. Also, the full library was written into each cell, resulting in a lot of duplicate Javascript for notebooks which included heavy use of the library. The new solution uses a few elements to avoid this:

    • The library is written as an external script file in the same directory as the notebook. This has the advantage of making debugging the Typescript library easier (this is a return to previous functionality).
    • The library is loaded once via a single script tag
    • Each cell is assigned a unique ID that is used by scenepic to target it
    • When reloading a saved notebook, order is preserved due to the use of the unique ids.
    Source code(tar.gz)
    Source code(zip)
    scenepic.min.js(337.01 KB)
  • v1.0.15(Nov 4, 2022)

  • v1.0.14(Sep 7, 2022)

    Point release adding additional graph features.

    New Features:

    • Can specify text alignment and size for graph labels and values
    • Can add vertical rules to separate out horizontal regions of the graph
    • save_html can now separate out the script and library components (for easier testing of new Typescript library features)
    Source code(tar.gz)
    Source code(zip)
    scenepic.min.js(424.86 KB)
  • v1.0.13(Aug 30, 2022)

    Point release adding stub files for all Python classes. (#17)

    New Features:

    • Stub files for all classes properly expose the docstrings in VS Code and other editors, thus making development in Python considerably easier.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.12(Aug 25, 2022)

    Point release to add a new script for generating the example scripts used on the documentation webpage.

    Bug Fixes:

    • Standalone scripts were missing a newline as a result of recent NPM changes. This is now added in manually in the script generation process.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.11(Aug 24, 2022)

  • v1.0.10(Jul 6, 2022)

  • v1.0.8(Jun 20, 2022)

  • v1.0.7(Feb 10, 2022)

    Point release improving MeshUpdate thus adding the ability to update colors per frame along with some minor additions.

    New Features:

    • Can now updated colors per frame for both meshes and instanced meshes
    • quaternion_multiply adds the long-missing code to combine quaternion rotations
    • Camera.orbit creates a sequence of orbiting cameras around a central point

    Deprecation:

    • update_mesh_without_normals has been deprecated in favor of the new method update_mesh_positions
    Source code(tar.gz)
    Source code(zip)
  • v1.0.6(Dec 11, 2021)

    Point release adding new camera mode as well as some improvements.

    Improvements:

    • There is now a new camera control mode, "First Person", accessible by pressing Tab, which enables mouse-look and wasdqe movement controls. The old mode, now called "Focus", is still available as the default.
    • Font scale is now configurable on VideoWriter
    • There is now a "reset camera" button on the control bar so that users without a keyboard can reset camera position
    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(Nov 16, 2021)

  • v1.0.4(Nov 2, 2021)

  • v1.0.3(Oct 26, 2021)

  • v1.0.2(Oct 20, 2021)

    Point release adding additional wheels to support Apple Silicon and some minor UI changes.

    Improvements:

    • The dropdown menu visibility can be directly controlled via UIParameters
    • A standalone parameter has been added to save_as_script to enable the creation of standalone scripts.
    • The status_bar_visibility of a Scene can now be set (i.e. it is not possible to hide the status bar if desired.)

    Bug Fixes:

    • While transparent backgrounds were supported by the library, it was not exposed via the client APIs. This has been fixed via a 4D color parameter for Shading.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Oct 7, 2021)

    Point release addressing various items that did not make the initial release.

    Improvements:

    • Added new hello_scenepic.py and hello_scenepic.cpp example code
    • Renamed cppsrc to src
    • Added a clang-format pipeline and build targets
    • Normalized C++ file format

    Bug Fixes:

    • load_obj now correctly loads normals when present in the OBJ file
    • MeshInfo now exposes normals
    • C++ build typos now fixed
    • Fixed erroneous pipeline triggers
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Oct 4, 2021)

Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
animation2gltf2 is a command line tool for generating animation glTF 2.0 content.

Generate animation glTF 2.0 content animation2gltf2 is a command line tool for generating animation glTF 2.0 content. A rotation and translation can b

UX3D GmbH 6 Dec 7, 2022
Lightweight and modular C++11 graphics middleware for games and data visualization

Magnum — Lightweight and modular C++11/C++14 graphics middleware for games and data visualization Looking for an open-source library that gives you gr

Vladimír Vondruš 4.3k Dec 30, 2022
Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X

Alpha Plot is a free application for Scientific Data Analysis and Visualization for Windows, Linux and Mac OS X (probably BSD also). Web Link Website

Arun Narayanankutty 171 Dec 26, 2022
HARFANG®3D is an all-in-one 3D visualization library usable in C++, Python, Lua and Go.

HARFANG® 3D engine HARFANG®3D is an all-in-one 3D visualization library usable in C++, Python, Lua and Go. Table of contents About Features Screenshot

HARFANG® 3D 280 Jan 1, 2023
RGL - 3D visualization device system for R using OpenGL

RGL - 3D visualization device system for R using OpenGL INTRODUCTION The RGL package is a visualization device system for R, using OpenGL or WebGL as

null 68 Dec 27, 2022
Binary visualization tool primarily aimed at videogame reverse engineering & research.

binviz Binary visualization tool. Allows you to load a binary and pan/zoom around its content. Each byte (or 4 bytes in 4-byte mode) is represented by

Nick Renieris 31 Dec 6, 2022
Vis: Asynchronous 3D Visualization Tool

English | 简体中文 Vis: Asynchronous 3D Visualization Tool Vis 是一款交互式异步3D可视化工具,旨在让3D视觉和机器人应用开发更简单。 其核心功能包括: 图形绘制 3D模型文件导入 多种交互工具 Gzimo 安装 Linux # 安装必要的依

RVBUST 117 Nov 2, 2022
Mandelbrot set visualization in OpenGL

Mandelbort-Set done in OpenGL Steps to build and run ( program tested only on Linux-Ubuntu 18.04,20.04 ) install the necessary packages- glut,glfw,glm

Paleti Krishnasai 2 Feb 13, 2022
Matplot++: A C++ Graphics Library for Data Visualization 📊🗾

Matplot++ A C++ Graphics Library for Data Visualization Data visualization can help programmers and scientists identify trends in their data and effic

Alan de Freitas 3k Jan 4, 2023
C++14 network/graph visualization library / Qt node editor.

QuickQanava QuickQanava is a C++14 library designed to display graphs and relational content in a Qt/QML application. QuickQanava provide QML componen

null 883 Jan 7, 2023
A set of open c++ game development tools that are lightweight, easy-to-integrate and free to use. Currently hosting a magicavoxel .vox full scene loader.

open game tools Open game tools is a set of unencumbered, free, lightweight, easy-to-integrate tools for use in game development. So far it contains:

null 291 Dec 29, 2022
Procedural Mesh Modeling Toolkit for Unreal Engine Artists

OpenLand Mesh Procedural Mesh Modeling Toolkit for Unreal Engine Artists. Installation Get it via the marketplace ??️ For non-commercial projects, you

GameDev4K 26 Nov 19, 2022
iMSTK - Interactive Medical Simulation Toolkit

iMSTK - Interactive Medical Simulation Toolkit About Overview Participants Licensing Resources Documentation Discourse Issue tracker Prerequisites Get

Kitware, Inc. 14 Nov 22, 2022
A PlayStation® Portable™ demo

Suicide Barbie by The Black Lotus A PlayStation® Portable™ demo Release History Source code (MIT licensed) released December 31st, 2020. OE/M33 'slim'

null 59 Dec 14, 2022
OpenGL made easy.

SmartGL OpenGL made easy. Demo video: https://youtu.be/zDuNxg4LJ18 (sorry for low-quality recording) For an example of how my engine is used, please r

null 18 Nov 11, 2022
Easy to integrate memory allocation library for Direct3D 12

D3D12 Memory Allocator Easy to integrate memory allocation library for Direct3D 12. Documentation: Browse online: D3D12 Memory Allocator (generated fr

GPUOpen Libraries & SDKs 493 Dec 31, 2022
A C++ commandline for use in servers and chat software. Provides very simple asynchronous input/output.

commandline A C++ commandline for use in servers and terminal chat software. Provides very simple asynchronous input/output. Supports reading and writ

Lion 70 Dec 20, 2022
A minimalist library with basic facilities for developing interactive real-time 3D applications, with a strong emphasis on simplicity and ease of use.

SlimEngine A minimalist and platform-agnostic base project for interactive graphical applications (2D/3D) with a strong emphasis on simplicity, ease o

Arnon Marcus 67 Oct 29, 2022
Software ray tracer written from scratch in C that can run on CPU or GPU with emphasis on ease of use and trivial setup

A minimalist and platform-agnostic interactive/real-time raytracer. Strong emphasis on simplicity, ease of use and almost no setup to get started with

Arnon Marcus 48 Dec 28, 2022