This is the discussion forum for Helix Toolkit.
For bugs and new features, use the issue tracker located at GitHub.
Also try the chat room!

Show wireframe as quads with Helix and SharpDX

Raul Burgos 4 years ago in Question • updated by Mak. Huzaifa 15 hours ago 66
Is it possible to get this effect ( Connected Mesh to QuadFaces ) in the viewportDX when a .OBJ model is readed on it?.
I'm using HelixToolkit.Wpf.SharpDX.
Somebody can post a example?
Thanks in advance.


Cannot connect a slider control to GridLabels

ikonuk 3 days ago in Question 0

I am trying to use GridLabels to display time in a model:

GridLabels.Add(new BillboardTextItem


    Text = String.Format("{0} {1} {2}", "Time = ", Well.TubeAnimTime.ToString("N0"), "Sec"),

    Position = new Point3D(0, 0, 500),

    WorldDepthOffset = 100


I tried to test this functionality using a Slider Control:


    <TextBlock Text="Animation" />

    <Slider x:Name="AnimationSlider" Value="{Binding Well.TubeAnimTime}"

    ToolTip="{Binding ElementName=AnimationSlider, Path=Value}" Minimum="0" Maximum="100" Width="100"  Margin="10"/>


Although the label displays OK and responds to all movements and zooming, it does not respond to the Slider. I know Slider works ok because other elements in my model responds to it.

I tried to change the biding mode to TwoWay in:

<h:BillboardTextGroupVisual3D Background="Gray" Foreground="White" FontSize="12" Offset="2,2"

Padding="1" Items="{Binding GridLabels, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"

IsEnabled="{Binding IsChecked, ElementName=FreezeAxisLblsCheckBox}" />

VS 2017 does not allow me as the property seems to be readonly.

I really like Helix Toolkit but I seem to be slow learner. Anyone can explain why the binding with the Slider does not work. Or is there any easier way to display the time parameter in a distinct box like GridLabels?


Media3D WPF

Mouse bindings

nsy 3 weeks ago in Question 0

Does anyone know how to change the mouse bindings? At the moment, the right mouse button is used to rotate the object. I would like to move this binding to the left mouse button and free up the right mouse button. The right mouse button will be used to display a context menu.


Loading Objects and Meshbuilder Questions

Bob 2 months ago in Question 0

First off, I do not want to waste anyone's time here.  I have searched extensively for answers to my questions but honestly, I haven't found a centralized source where one can go to learn about the Helix Tool Kit.  Any suggestions for the definitive source would be very helpful.

Loading an OBJ model

I am writing an application that is basically an IMU head tracker.  I have used Helix to create three viewports; one each for front, top, and side views.  I am using the teapot for the object.  I have it working where the teapot in each viewport rotates according to the data from the IMU.  I have an OBJ file of a human head and for the life of me, I can't seem to get that file to load.  I don't see the need to load it programmatically.

From an example I found, I added:

<Helix:FileModelVisual3D x:Name="Head3D" Source="c:\malehead.obj"/>

in place of:


Is that all that is necessary?  FYI: If I have to do it programmatically, I am using VB, not C# in Visual Studio.


I also want to create a POV viewport.  I will have a wireframe sphere with the origin at 0,0,0.  The perspective camera will also be at 0,0,0 so the camera will be showing the wireframe from inside the sphere.  The camera will rotate in three axis based on the incoming IMU data.  Placing text on the wireframe showing the angular distance from 0,0 would be icing on the cake.

I just have not been able to find any example, tutorial, or documentation on how Meshbuilder is used.

Your help is greatly appreciated.


plane and 3d model intersection

Armaghan 4 months ago in Question 0

hello. how can I cut a 3D model using a plane in helix ?


Using FbxSharp for FBX imports?

enjlectric 5 months ago in Question 0


for a project of mine it would be convenient if I could find a way t o import FBX files into the Wpf.SharpDX version of the toolkit.

I have found this FBX Parser for C# and am currently trying to read my way into that, but as I am doing so I'm wondering if anyone else has tried the same, or if this can even possibly yield any good results. I've only started using Helix earlier this week so I'm not exactly an expert, so there may aswell be a logical impossibility when trying to convert a model from the FBX scene class to the Object3D class. If that's the case, I would like to know where these problems lie, out of curiousity.

Thank you for reading.


Show axis scale

Artem Artem 5 months ago in Question • updated 5 months ago 0


I'm just stuck.

I've starte research Helix-tookit. I very like, but I have some troubles.

 I want to display axis scale(perfectly it's display real numbers corresponding to grid node)

Markup looks like


<Window x:Class="UpDirectionDemo.MainWindow" 
 xmlns:x="" xmlns:h="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf" Title="UpDirectionDemo" Height="480" Width="640" xmlns:local="clr-namespace:UpDirectionDemo" > 
 <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Center" Text="HelixViewport3D.ModelUpDirection = 0,1,0" Padding="8" Foreground="Black"/> 
 <h:HelixViewport3D x:Name="view1" CameraRotationMode="Turntable" ModelUpDirection="0,1,0" ShowCoordinateSystem="True" > 
 <PerspectiveCamera Position="5, 30, 40" LookDirection="-5, -30, -40" FieldOfView="45" UpDirection="0,1,0"/> 
 <h:CoordinateSystemVisual3D ArrowLengths="10" /> 
 <h:BillboardTextVisual3D Position="12 0 0" FontSize="24" Text="X" /> 
 <h:BillboardTextVisual3D Position="0 12 0" FontSize="24" Text="Y" /> 
 <h:BillboardTextVisual3D Position="0 0 12" FontSize="24" Text="Z" /> 
 <h:GridLinesVisual3D Normal="0,1,0" LengthDirection="1,0,0"/> 


I cant find this params. I've just only found ThetaDiv in ArrowVisual3D class. 

Is any way to display to display what I want? Thearetically I can create my own class MyArrowVisual3D(extends from ArrowVisual3D ) and create method for display it, but it to complex, I guess.



Trouble rotating the 3D object in WPF

JMaroun 8 months ago in Question 0


I have been experiencing trouble when I try to rotate the 3D object that I have loaded into my main window by X, Y and Z coordinates and I was wondering if I could see an example project where this is fully implemented. Basically I want to be able to feed a degree in and be able to rotate the model by that degree in the specified axis. The model behaves very weirdly when I try to do this so any code that has this functionality would be of much help. 




hierarchical 3D model via Visual3D and AddVisual3DChild -> only root is rendered...

LuNo 10 months ago in Question • updated 10 months ago 1


I am relatively new to the HelixToolkit and I have a (probably simple) question: I want to build a scene out of several .stl files and I aim to employ parent/children relations in order to apply transforms to the whole hierarchy "automatically".
I created the following class to represent a mechanical axis (imagine a robot arm with a few scene graph nodes), but when I build up the data structure, only the root is rendered. The strange thing is: The Visual3D objects cannot be added to the Viewport3D once they have been set as a child somewhere else (e.g. after I added the Visual3D children to the parents, this is expected behaviour afaik). But these children are not rendered (except the root). I do assume I am missing some event or notification I should trigger? I browsed through most of the examples, usually a Model3D is built on the fly if an aggragation of meshes is needed. I would be grateful for any hints in this matter.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Windows;
using System.Windows.Media.Media3D;
using PropertyTools.DataAnnotations;
using BrowsableAttribute = System.ComponentModel.BrowsableAttribute;

using HelixToolkit.Wpf;

namespace Vizualizer_WPF
    //class MachineAxis3D : UIElement3D
    class MachineAxis3D: ModelVisual3D
        public static DependencyProperty RotationAngleProperty = DependencyPropertyEx.Register<double, MachineAxis3D>("RotationAngle", 0, (s, e) => s.AppearanceChanged());
        public static readonly DependencyProperty PrincipalDirectionProperty = DependencyPropertyEx.Register<Vector3D, MachineAxis3D>("PrincipalDirection", new Vector3D(1, 0, 0), (s, e) => s.AppearanceChanged());

        public MachineAxis3D()


        [Slidable(0, 360)]
        public double RotationAngle
                return (double)this.GetValue(RotationAngleProperty);

                this.SetValue(RotationAngleProperty, value);

        public Vector3D PrincipalDirection
                return (Vector3D)this.GetValue(PrincipalDirectionProperty);

                this.SetValue(PrincipalDirectionProperty, value);

        public int ChildrenCount()
            return this.Visual3DChildrenCount;

        public void AddChild(Visual3D visual3D, Model3D model3D)
            Model3DGroup newGroup = new Model3DGroup();
            Content = newGroup;

        // handles the rotation of the axis
        private void AppearanceChanged()
            var tg = new Transform3DGroup();
            tg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(PrincipalDirection, RotationAngle)));
            Transform = tg;

Media3D WPF

HelixToolkit.SharpDX - Transparent billboard

Isdas 11 months ago in Question 0


Great work on the new version of HelixToolkit! Really impressed by the work done!

A small question: When I set the transparency of a billboard to Color.Transparent the billboard gets transparent (great). One small problem I have right now: other billboards that are behind this billboard gets cut. Is there any way of solving this problem?


Best regards