Improve WPF 3D
In general, simply invest in improving the 3D framework. Specifically, add the ability (for users) to create and instantiate high level 3D elements in xaml (e.g. allow Cube, Cylinder, Sphere, etc. to be "native" WPF objects).
Jackson Pope commented
I second all of Reed Copsey Jr.'s requests. Is anything being done on WPF 3D at the moment?
Plamen Dimitrov commented
And please add things as basic as 3D lines...
Felice Pollano commented
Even importing assets as XNA is already hable ( 3ds etc ) wpould be great
Personally I would like the 3D framework to have some features of the 2D framework, namely things like ItemsControl and ItemTemplate. And also 3D objects should have abilities like DataContext.
For example - I am developing an MVVM based application and I would like my views to be Visual3D objects. It's very hard to achieve with the current framework as no Visual3D object has DataContext and binding is not as easy as in 2D.
Hi, I cobbled together a test app using WPF 3D and it is very encouraging. For CAD oriented app, native point and wireframe rendering is a must. Please consider it in your next release. Thanks.
Andrej Benedik commented
I am the author of Reader3ds and Ab3d.PowerToys (www.wpf-graphics.com) that greatly enhance WPF 3D abilities.
My suggestions for WPF 3D:
- Native transparency sorting
- Add CameraChanged event that would fire when any camera property would change (LookDirection, Position, etc.) - very easy to add to WPF - with the event there would be no need to use CompositionTarget.Rendering event to check if the camera was changed,
- native DirectX 3D line support (the Ab3d.PowerToys already support 3D lines but they are made of triangles - however its implementation is much better than ScreenSpaceLines).
Hey! I noticed that there is a awesome new project on CodePlex (http://http://helixtoolkit.codeplex.com/) that provides a great replacement WPF3D navigation control. I've been happily using the HelixView instead of the trackball from the 3DTools project. It also has rendering exporters, primitives like spheres and boxes and more.
Maybe it would make more sense for the Microsoft team to work on the low-level stuff like proper point/line support, transparency etc. which needs to integrate with the low-level MIL layer and can't be done by the community otherwise.
@Reed: The lack of 2) have given me tons of headaches!
Reed Copsey, Jr. commented
My suggestions for WPF 3D, prioritized:
1) Proper point/line support
2) Add ability to use order ind. transparency techniques if supported in hardware, such as depth peeling or stencil techniques. This should be handled at WPF's level directly, and would dramatically improve the usefulness of the API.
3) Multi-texturing, with a way to have separate UV coordinates for separate materials on an object.
This would dramatically increase the usefulness of the 3D API.
That 3D is a consistent part of the WPF framework is awesome and should be a great platform for rich data visualization! Some suggestions going forward:
- I would love to see first-class support for drawing points (point clouds) and lines (wireframe) in 3D space. The current workarounds like ScreenSpaceLines are poor. The underlying Direct3D API has point and line primitives.
- Introduce a first-class 3D viewer WPF control with both object-inspector style view (like in 3D tools) and 3D maps type viewing (like Bing maps 3D). (With stylable controls and behaviour etc.)
- Sort out the transparency / Z-order stuff.
- Create and sustain a great CodePlex 3D data visualization project to generate some internal feedback (like the Dynamic Data Dispay). Get other teams like the scientific workbench research people and the robotics teams to try to use WPF3D for their visualization work. You need somebody to give you the kind of feedback WPF got from the Visual Studio integration.
- We'd love to get to know the developers working on WPF3D now, and get some new blogs and samples going to show that there are still interest and development since the initial developers left MS.
I agree - high level objects and texture mapping helpers are very much needed. 3DUtils provides some of this but it's not been updated for ages, and these things should really be in the core library.
Something else I need in my application is a way to turn off/on mipmapping.
Also there currently appears to be no way to export a hardware-rendered 3D scene! See http://stackoverflow.com/questions/2179042/rendertargetbitmap-and-viewport3d-quality-issues
Eriawan Kusumawardhono commented
I think this means WPF will need some backport of DirectX APIs, including Direct3D, DirectDraw, and now DX 10+ features: DirectWrite.
Josh Reuben commented
I would like to see native support for complex nurb patch surfaces - a high level scene graph should go beyond a mesh of points.
Oh and I forgot:
- simple runtime texture mapping helpers would be very helpful: sphereprojection, planarprojection etc.
This is a really serious Issue for us. WPF 3D is a very good approach to easily generate 3D scenegraph without having to deal with things like ZBuffer, GraphicsDeviceManager, IndexBuffer etc.. WPF 3D is powerfull because it is simple, high level and directly integrates into the rest of the WPF ecosystem. But WPF 3D misses a LOT of features that are highly needed. Here just some examaples:
- transparency sorting does not work,
- no native primitves like sphere, cone, cylinder (managed 3rd party implementation don't perform well)
- Inverse Kinematics, Bones (I would really love to import a simple rig and control it from C#)
- no 3D shader support
- realtime shadows
- more advanced material support (BumpMapping etc.)
- hiding and showing ModelVisual3D or Model3D objects is only possible by scaling it to 0
- generally there is now way to modify the scenegraph at runtime (removing/adding items) declaratively (e.g. through databinding, its all code behind)
- MVVM/databinding with 3D is a pain in the a**, no datatemplates for 3D, no ItemsControl for 3D
Cory Plotts commented
I agree ... WPF 3D needs some love!