Giter VIP home page Giter VIP logo

aardvark-platform / aardvark.media Goto Github PK

View Code? Open in Web Editor NEW
47.0 17.0 14.0 18.53 MB

Serverside, functional (ELM style) front-end and UI for Aardvark, an open-source platform for visual computing, real-time graphics and visualization.

Home Page: https://aardvarkians.com/

License: Apache License 2.0

Batchfile 0.01% F# 25.34% Shell 0.01% HTML 0.11% CSS 29.66% JavaScript 44.90%
aardvark aardvark-platform elm rendering-engine graphics 3d-renderings visualization mvu gpu functional-programming

aardvark.media's Introduction

Windows MacOS Linux

Discord license

The Aardvark Platform | Gallery | Packages&Repositories

Aardvark.Media provides high-performance applications and purely functional application programming for graphics and user interfaces. It brings together 3D graphics, user interfaces, and complex interactions with the ELM architecture, which makes declarative, reliable UI and app development easier. Aardvark.Media supports interactions with objects in 3D renderings, just like buttons in elm or Elmish. In Aardvark.Media, changes are computed on the model, allowing incrementally updating optimized scene representations for 3D rendering. The library runs on netcore and sites are served using suave or Giraffe. Rendering supports OpenGL and Vulkan. Applications typically use the electron-based aardium for client-side application deployment or full server-side application deployment. Experimental support for client-side deployment using fable exists. Aardvark.Media’s server-side approach is particularly useful in remote-rendering scenarios. Supported platforms are windows, linux, macOS.

You can find demos and code in the Gallery and Packages&Repositories links above. Additionally, examples are available in the src/Examples* folder in this repository. This repository's wiki contains technical documentation and written tutorials. For more information, please refer to the aardvark.docs wiki.

Aardvark.Media is part of the open-source Aardvark Platform for visual computing, real-time graphics, and visualization. Aardvark.Media builds on basic data structures and tools from Aardvark.Base. High-performance 3D rendering is provided by Aardvark.Rendering.

aardvark.media's People

Contributors

arlohb avatar aszabo314 avatar brunnhuber avatar gnufu avatar haraldsteinlechner avatar hyazinthh avatar krauthaufen avatar laurafritz14 avatar luithefirst avatar rebeccanowak avatar stefanmaierhofer avatar thomasortner avatar walchandreas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aardvark.media's Issues

Cornercases - picking

empty bounding box/invalid bb currently leads to stackoverflow. warning and ignore those?

MutableApp.toWebPart is blocking the application

MutableApp.toWebPart is the default entry used in most demos and applications. This also builds a renderer : Server with fileSystemRoot = Some "\" (https://github.com/aardvark-platform/aardvark.media/blob/master/src/Aardvark.UI/MutableApp.fs#L128).
On Windows this then performs a GetAllDrives and then tries to enumerate all files, but only to check if it is empty: https://github.com/aardvark-platform/aardvark.media/blob/master/src/Aardvark.Service/aardfs/FileSystem.fs#L189

There are scenarios with network drives that then result in blocking the application startup seemingly indefinitely (continuing after 10-12mintures). When the network drives that cause the issue are inspected with a windows file explorer it's also "looking" for a very long time without any progress.

I'm not sure if the root path "" should be considered valid. From my analysis, I would see two tasks:

  1. It should be possible to deactivate this feature or even require it to be activated explicitly
  2. The default behavior should no longer enumerate all drives + files on startup

CameraControllers rework

Currently the camera controllers miss some love:

  • freely controller zoom does not work on mac
  • arc ball works uses thread pool instead of animation based system
  • orbit controller does not support pan

Websocket stability

we are seeing ws problems in sleep/minimize scenarios. can we somehow try to reboot the connection on failure?

often this looks like:

[15:57:03 INF] WebSocket disconnected ConnectionError "Connection
reset by peer"
c: [Scene] n1047: destroyed

seealso pro3d-space/PRo3D#76

Repository cleanup

The repository is superhuge, a lot of projects are poorly maintained. The idea is to move out examples and sketches which we find useful and sort them either into separate projects or aardvark.docs depending on what is best for each.

Broken image when taking screenshot with mismatching sampling size

When taking a screenshot via the screenshot service and the sampling size of the service and the targeted render node / control do not match the screenshot becomes garbage. Refreshing in quick succession returns a valid screeshot, leading to the assumption that the first frame is somehow broken.

Reflection.assemblyWebPart name encoding/special characters

With special characters in assembly names like -, space etc resource names in GetManifestResourceNames become hard to analyse and work with. With LogicalName this can be controlled as such:

    <EmbeddedResource Include="resources/DragUtilities.js">
      <LogicalName>resources/DragUtilities.js</LogicalName>
    </EmbeddedResource>`

to support this it is need to detect resources with logical name and allow them through

nested accordeons don't work

If a accordeon from UI.Primitives is nested in another one, the inner accordeon is broken: At a click it opens and immediatly closes again.
The issus seems to be that each accordeon issues a JS call to accordeon(), witch seems to affect all children too. The child accordeon then has the action attached twice.

ClientValues

We should finally add ClientValues to renderControl/scenegraph creation and add some mechanism to get these values into the model (beforeRender event maybe?)

  • ViewportSize
  • some sessionId
  • transferMode (jpeg/raw)
  • any other ideas?

Failed to link to librt.so.1 on linux

Got this error at runtime:

 2: ERROR
 2:   [Client] 1: rendering faulted with System.DllNotFoundException: Unable to load shared library 'librt' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibrt: cannot open shared object file: No such file or directory
 2:      at Aardvark.Service.SharedMemory.Posix.Linux.shmunlink(String name)
 2:      at Aardvark.Service.SharedMemory.Posix.Linux.create(String name, Int64 size)
 2:      at Aardvark.Service.MappedClientRenderTask.recreateMapping(Int64 desiredSize)
 2:      at Aardvark.Service.MappedClientRenderTask.ProcessImage(IFramebuffer target, IRenderbuffer color)
 2:      at Aardvark.Service.ClientRenderTask.Run(AdaptiveToken token, ClientInfo info, ClientState state)
 2:      at <StartupCode$Aardvark-Service>.$Server.arg10@1860-1(Client this, V2i size, C4b background, AdaptiveToken token) (stopping)

I have librt.so.1 installed at /lib

Can't show Dev Tools

AardvarkCefBrowser ShowDevTools() throws this exception

Method not found: 'Void Xilium.CefGlue.WindowsForms.CefWebBrowser.add_BrowserCreated(System.EventHandler)'.

Mapped-File support

Support MappedFile mode in Cef using a version supporting external ArrayBuffer creation

Camera controller can't handle very small sensitivities

behavior

When using a very small navigation sensitivity, e.g. 10^-5, the mouse interactions zoom, pan, and wheel zoom do not move the camera, while keyboard movement works fine.

expected behavior

super accurate pan and zoom movements with arbitrarily small movement intervals

my setup

let sensitivity = -5.0
let config = { 
  cam'.freeFlyConfig with
    panMouseSensitivity       = exp(sensitivity) * 0.0025
    dollyMouseSensitivity     = exp(sensitivity) * 0.0025
    zoomMouseWheelSensitivity = exp(sensitivity) * 0.1
    moveSensitivity           = sensitivity
    lookAtMouseSensitivity    = 0.004
    lookAtDamping             = 50.0
    }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.