For bugs and new features, use the issue tracker located at GitHub.
Also try the chat room!

Touch controls
AnotherBor wrote at 2014-01-08 11:56:
If I set the rotate gesture to LMB and simply put my finger on the screen and drag, I can see the manipulation icon displaying but the camera does not react until I drag after double-tapping.
After I force Helix to notice my touch by double-tapping and play with the scene for a while, sometimes it flips back to whatever mode it was in before and again just touch-dragging does not do anything (or pans the view) but display the manipulation icon. After a double-tap (or a few), I can again simply just drag to rotate the view.
If I disable panning and remove pan gestures still first touch and drag just displays the manipulation icon but nothing else happens.
Is there any special setup I should employ to use touch for rotating the camera without initial double-tap?
objo wrote at 2014-01-08 12:18:
AnotherBor wrote at 2014-01-08 12:31:
Indeed, single tap switches between pan and rotate.
But, in my app I don't need pan. If I remove pan gestures and disable panning, still to start rotating by touch I need to tap once.
That's very unintuitive.
Is there any way to switch to "drag rotates" mode by default?
objo wrote at 2014-01-09 11:43:
With this change, a one finger gesture should rotate, a two finger gesture should pan and a pinch gesture should zoom. The double-tapping feature is removed.
AnotherBor wrote at 2014-01-10 02:33:

It works on Pixelsense
JohnSourcer wrote at 2012-12-11 20:28:
Hi Objo,
After many hours of working with your toolkit, I managed to get it working on Pixelsense device SDK 2.
I have it in a ScatterViewItem and am able to rotate and zoom the 3D object (a globe in my case). I do however wonder if I have the code right (it seems to smell a little) and would appreciate any thoughts:
//Grabbed the touch event on the Helix3DViewport private void HV3DTouchDown(object sender, TouchEventArgs e) { HelixViewport3D view = sender as HelixViewport3D; CameraController cameraController = view.CameraController; cameraController.TouchMode = TouchMode.Rotating; Manipulation.AddManipulator(cameraController, e.TouchDevice.AsManipulator()); e.Handled = true; CaptureTouch(e.TouchDevice); }
JohnSourcer wrote at 2012-12-12 10:32:
Never relinqushes the touch though.
objo wrote at 2012-12-13 23:26:
Cool to hear you got it to work! Sorry I have now experience with the Pixelsense SDK. Do you need to add the manipulator to the camera controller on every touch down event?
JohnSourcer wrote at 2012-12-14 06:30:
Nah sorted that out.
When I zoom however, the Axis of the sphere changes but the camera still focuses on the old axis. So if you spin the globe now it goes all over the show. How do you reset the camera controller to view at the globe at the new zoom?

Looking to have an elbow developed for PipeVisual3D's
michaeldjackson wrote at 2012-10-24 21:21:
My manager asked that I provide an elbow fitting to go along with PipeVisual3D. Elbow should join two pipes at any angle and any change in diameter, ie: reducing elbow. I don't have enough experience or knowledge of WPF 3D to do it in the time frame alloted.
We are willing to fund the development, if reasonable. Fairly short timeframe.
Other simple fittings to follow, such as reducers.
Michael
objo wrote at 2012-10-26 08:51:
I don't know about a .NET implementation, but the GLE Tubing and Extrusion library creates nice 'elbows' on its tubes. There is also a java library mentioned on that page, but its link seems to be broken.

Helix not yet built ?
Rogad wrote at 2013-12-04 15:54:
Sorry for my noobiness but I have an error I can't figure out. In the solution explorer the Helix.Toolkit.Wpf reference has a alert icon next to it. I'm not sure what I need to do to correct that.
I guess this is what is causing the XAML to not be recognised ?
Can anyone nudge me in the right direction please ?
Thanks !
Rogad wrote at 2013-12-04 15:56:
objo wrote at 2013-12-04 19:39:
The solution should build with 0 errors and 0 warnings on VS 2012, VS 2013 and VS Express 2013 for Windows Desktop.
Rogad wrote at 2013-12-04 20:26:

unable to find samples
rocheey wrote at 2012-07-12 21:02:
downloaded the newest ver [HelixToolkit-2012.3.77.1.zip], and while there are samples, they are all compiled .exe's
Downloaded the examples file [HelixToolkit-examples.zip] and it is the same ... not one bit of source, only compiled exes...
Is there some place I can go to see some of the toolkit in action ?
rocheey wrote at 2012-07-12 23:09:
ooops... nevermind ... found it :)
objo wrote at 2012-08-09 01:07:
I added a note in bold in the download's "Release notes" now.
I recommend cloning the source with Hg from https://hg.codeplex.com/helixtoolkit
You can also download the latest source from the "Source code" tab.

N-Dimensional Ellipsoid in 3D Space
CMC wrote at 2013-02-20 00:22:
Does anyone know how to do this? I've searched the web fruitlessly.
Added Bonus challenge: The bulge is colored in a gradient on the ellipsoid as a function of the degree of "bulging".
Thanks.
objo wrote at 2013-02-20 11:34:
MeshBuilder.AddSphere
method. To get the color gradient, you should use texture coordinates. Normalize the values to [0,1] and use a material with a gradient brush.
CMC wrote at 2013-02-21 02:37:

Animate color property of SphereVisual3D's material.brush
mfoste wrote at 2013-07-03 21:52:
I'm trying to animate the Brush.ColorProperty of the DiffuseMaterial assigned to a SphereVisual3D object in code, but am not having any success. I'd appreciate any suggestions anyone can offer.
In the class constructor:
targetModel = new SphereVisual3D();
targetModel.Center = new Point3D(0,0,0);
targetModel.Radius = 3;
targetModel.Material = FindResource("TargetMaterial") as Material;
Later, as a response to a button press: ColorAnimation myColorAnimation = new ColorAnimation();
myColorAnimation.To = Colors.Red;
myColorAnimation.BeginTime = TimeSpan.FromSeconds(0);
myColorAnimation.Duration = TimeSpan.FromSeconds(.5);
myColorAnimation.FillBehavior = FillBehavior.HoldEnd;
DiffuseMaterial material = targetModel.Model.Material as DiffuseMaterial;
Storyboard.SetTarget(myColorAnimation, material.Brush);
Storyboard.SetTargetProperty(myColorAnimation, new PropertyPath(SolidColorBrush.ColorProperty));
Storyboard myStoryboard = new Storyboard();
myStoryboard.Duration = TimeSpan.FromSeconds(3);
myStoryboard.RepeatBehavior = RepeatBehavior.Forever;
myStoryboard.Children.Add(myColorAnimation);
myStoryboard.Begin();
BTW - I was able to successfully animate the SphereVisual3D's radius property, but I have not been successful at it's material brush color property.mfoste wrote at 2013-07-03 22:21:

Clickability between oxyplot and helix
Me and a classmate are doing a school assignment where we're asked to develop av visualizing program for tomography data. For parts of this project we are using Helix and Oxyplot. Helix to model the pipes in question with Pipe3D, and Oxyplot to plot an intensity chart for the data set.
The data set is several 2D matrices, one for each measurement. This is processed into a bitmap which is displayed onto the 3D model.
We are using MVVM as our design pattern.
We want to introduce clickability and interactivity between these two parts. When a point or a field is marked with the pointer in the oxyplot, the same area should also be marked on the Helix model, or vice versa. The question is which is the best way to do this, and how does one do it? (bear in mind we are not experienced programmers)
Please feel free to ask any questions!

Custom Color to CoordinateSystemVisual
Goodlad wrote at 2014-07-19 09:47:
I am trying to change the axis color on the CoordinateSystemVisual3d, but I can only get the black or the default (green, red, blue colors).
<helix:CoordinateSystemVisual3D x:Name="Cord" ArrowLengths="10">
<helix:CoordinateSystemVisual3D.XAxisColor>
<Color R="152" B="152" G="152"/>
</helix:CoordinateSystemVisual3D.XAxisColor>
<helix:CoordinateSystemVisual3D.YAxisColor>
<Color R="30" B="187" G="238"/>
</helix:CoordinateSystemVisual3D.YAxisColor>
<helix:CoordinateSystemVisual3D.ZAxisColor>
<Color R="68" B="35" G="80"/>
</helix:CoordinateSystemVisual3D.ZAxisColor>
</helix:CoordinateSystemVisual3D>
Thanks for any help, John

Better way to load multiple models ?
Rogad wrote at 2013-12-08 18:10:
ObjReader CurrentHelixObjReader = new ObjReader();
neutral = CurrentHelixObjReader.Read("C:/Users/Roger/Desktop/cutie1/cutie.obj");
ObjReader CurrentHelixObjReader2 = new ObjReader();
anger = CurrentHelixObjReader2.Read("C:/Users/Roger/Desktop/cutie1/cutie_ExpressionAnger.obj");
ObjReader CurrentHelixObjReader3 = new ObjReader();
smile = CurrentHelixObjReader3.Read("C:/Users/Roger/Desktop/cutie1/cutie_ExpressionSmileOpen.obj");
ObjReader CurrentHelixObjReader4 = new ObjReader();
blink = CurrentHelixObjReader4.Read("C:/Users/Roger/Desktop/cutie1/cutie_ModifierBlinkLeft.obj");
So you can see I am loading 4 models. I was thinking I could do this, but the individual models do not load, I think it's just loading the first one four times but I am not sure.
ObjReader CurrentHelixObjReader = new ObjReader();
neutral = CurrentHelixObjReader.Read("C:/Users/Roger/Desktop/cutie1/cutie.obj");
anger = CurrentHelixObjReader.Read("C:/Users/Roger/Desktop/cutie1/cutie_ExpressionAnger.obj");
smile = CurrentHelixObjReader.Read("C:/Users/Roger/Desktop/cutie1/cutie_ExpressionSmileOpen.obj");
blink = CurrentHelixObjReader.Read("C:/Users/Roger/Desktop/cutie1/cutie_ModifierBlinkLeft.obj");
Rogad wrote at 2014-02-15 19:00:
objo wrote at 2014-02-18 08:39:
Customer support service by UserEcho