View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001465||NoesisGUI||C++ SDK||public||2019-05-11 18:57||2019-05-16 14:26|
|Priority||normal||Severity||feature||Reproducibility||have not tried|
|Target Version||2.3.0||Fixed in Version|
|Summary||0001465: Allow 3D world-view-projection transforms in MVVM, independent of screen space for high performance spatial UI|
|Description||Hi, I've been dabbling with spatial UI in Noesis. I have a need to render many spatial elements at the same time, each with their own storyboards.|
I first started doing it the render texture method. The performance of doing this isn't good, and the visual quality can suffer when the camera gets close to the element. So it's not desirable.
I decided it'd be far better to render the geometry directly into the world. So I tried something else - each spatial element now has its own view, and manages its own world view projection matrix. Before I tell Noesis to render each spatial view, I tell the grpahics device that I'm about to render a spatial element, and I pass it the element's world view projection. Now, when Noesis sets the buffers for this view, I override batch.projMtx directly with the new matrix.
The result is I get wonderful graphics quality, and the performance is better than using tons of render textures. But it's still not as good as it could be. Because each view is rendered separately, it doesn't take advantage of batching across all the views, and performance can suffer when each element has text in it.
I can't achieve what I want with the Noesis Projection attached property. Try as I might, I just can't work around the way Noesis handles a Matrix3DProjection behind the scenes.
So I believe the best solution would be, for example, to have a single Noesis scene/view, which has an ItemsControl bound to a collection of SpatialElement view models, which contain their own world-view-projection matrices. Then in the DataTemplate, we can assign this matrix to the root element, where Noesis would render the element (applying the transform directly to the vertices?) while ignoring any screen space projection that is applied behind the scenes. To be able to do this via MVVM would be incredibly powerful.
|Tags||No tags attached.|
|you nailed this. We are working on this feature for the next major version. We are going to deprecate the current implementation of the Projection property in favor of having real 3D.|
|That's exciting, thanks for getting back to me!|
in version 2.3 there will be support for 3D primitives (mesh, line ...)?
I want to implement 3D Gizmo (manipulators) on Noesis)))
|We are working in a feature to inject 3D geometries inside a XAML. For example, to have a button that is a 3D-mesh. But the render must be done by the engine (Unity, Unreal, custom). That's something Noesis won't do, apart from calling a callback at the right time.|
|2019-05-11 18:57||mingingmingler||New Issue|
|2019-05-11 19:03||mingingmingler||Description Updated||View Revisions|
|2019-05-11 19:05||mingingmingler||Description Updated||View Revisions|
|2019-05-11 19:06||mingingmingler||Description Updated||View Revisions|
|2019-05-14 20:55||jsantos||Assigned To||=> jsantos|
|2019-05-14 20:55||jsantos||Status||new => assigned|
|2019-05-14 20:55||jsantos||Target Version||=> 2.3.0|
|2019-05-14 20:56||jsantos||Note Added: 0005675|
|2019-05-15 01:09||mingingmingler||Note Added: 0005677|
|2019-05-15 14:32||realesmedia||Note Added: 0005678|
|2019-05-15 22:01||jsantos||Note Added: 0005679|
|2019-05-16 14:26||realesmedia||Note Added: 0005682|