Introducing Thriple: A Library of 3D WPF Components

I recently published a new project on CodePlex called Thriple.  It contains 3D components that you can easily add to your WPF user interfaces.  As of version 1.0, Thriple contains my old Panel3D layout panel, and my new ContentControl3D.  I have put a lot of time and effort into making ContentControl3D a highly reusable, customizable control.  I’m very happy with how it turned out, but be sure to read the Known Issues section on Thriple’s Release page.

The source code download also contains sample applications that show the components in action.  If you want to check it out, here’s the link: http://thriple.codeplex.com/

kick it on DotNetKicks.com

9 Responses to Introducing Thriple: A Library of 3D WPF Components

  1. Paul says:

    Why the link isn’t working? 😡

  2. Josh Smith says:

    The link to the Thriple project works for me. I’m not sure why it isn’t working for you. Perhaps try with a different browser? Sorry, I don’t know what to tell you.

  3. […] He is calling this offering Thriple, and you can check it out over at the Thriple home page over at codeplex. Here is a link Thriple Home Page […]

  4. Chris says:

    Josh,
    Do you know if the memory issues, that have been discovered within the WPF framework, happen when 3D is employed; or are they problematic for WPF in general? I was seriously thinking of using the 3D control in my application, but, many users will have low end PCs and may be vulnerable to the memory issues you describe. But, that got me thinking … is this a problem with WPF in general in regards to older low end PCs with sub optimal video cards?

    Chris

  5. Josh Smith says:

    Chris,

    From what I can tell, based on conversations with folks from MSFT, it’s a combination of the two. I don’t know all the details, but the severe memory leak can happen if the machine’s video card does not support hardware acceleration. Now, that might be because the video card is too old, or its drivers need to be updated. In that situation, the software rendering done by WPF ends up having a big memory leak (at least, when using my 3D controls…I can’t speak in general terms here). This issue has been fixed, and will be rolled out in upcoming patches, as listed in the Known Issues section on the codeplex project’s Release page.

    Regarding the smaller memory leak, which isn’t a showstopper by any means, that appears to also be an issue in WPF’s interaction with DirectX. It’s not related to video cards, and will happen on any machine. That leak, as I mentioned, is not too bad, so don’t let that prevent you from using ContentControl3D.

    Microsoft is well aware of these issues and is resolving them.

    Josh

  6. Rene says:

    Josh,

    Thanks for sharing all your great work with us WPF newbies. I just tried to use your ContentControl3D to show 2 different user controls on the front and back side. The front usercontrol contains a datagrid, the back user control contains a data entry form like in your BindingToViewModel sample. The ContentControl3D is part of a layout where it should always fill its designated area. AND this is where my problem arises: I have to give the grid in the datatemplate that renders both sides a certain size(also in your sample). If I remove the Width=”300″ and Height=”300″ the result is a dramatically scaled user control. Isn’t it possible to have all size properties on “Auto” and to stretch the controls like a normal 2D control?

    My goal:
    The user controls should be rendered like they weren’t contained in a ContentControl3D as long as there is no rotation active.

    René

  7. Josh Smith says:

    Rene,

    I know exactly what you mean. When rendering 2D elements in 3D (via Viewport2DVisual3D), it looks like they are being shown in a Viewbox that stretches them out. I am not aware of any way to prevent that. Would resizing the user control in the ContentControl3D to the appropriate size at runtime help to fix this for you? If you find a good solution, please let me know.

    Josh

  8. Rene says:

    Josh,

    That’s the answer I was afraid of. So I’ll have to dig into this problem a little deeper. I’ll let you when I found a solution (in a year or two 😉
    Thanks anyway.

    René

  9. Chris says:

    Thanks for your reply Josh.

    Chris