For bugs and new features, use the issue tracker located at GitHub.
Also try the chat room!
Missing wiki page: Create a 3D view
hasanabb wrote at 2013-12-29 10:41:
The documentation on the following page seems to be missing:
http://helixtoolkit.codeplex.com/wikipage?title=Create a 3D view&referringTitle=Documentation
I found the link on this page:
http://helixtoolkit.codeplex.com/documentation
Can you look into fixing this page?
Thank you.
objo wrote at 2014-01-07 22:53:
Currently, the best way to learn this library is to look at the code for the examples.
Start with Source\Examples\SimpleDemo
Model up direction on sphere surface
Cowhide wrote at 2014-01-16 22:04:
Vector3D normal = (placementPosition - centerOfSphere).Normalize
So lets say I have a Point3D for the position of the object. I then translate transform the objects position to put it at this point which works. Next is to rotate it somehow to that it is pointing "up". This is the part I'm missing. Please be gentle, just learning 3D programming.
Thanks!
objo wrote at 2014-01-23 20:07:
Then use the Vector3D.CrossProduct to find a vector that is perpendicular to the two others. Normalize the vectors and now you have an orthonormal basis.
Define a Matrix3D where m11-m33 are the components of the three vectors (defined in rows or columns, I never remember...) and finally create a MatrixTransform3D.
This would be a nice example to add to the example browser - e.g. a sphere with the earth texture and the eiffel tower model - they are already in there!
Weird binding behavior
AlexNET4 wrote at 2013-03-14 16:48:
I've got a weird binding behavior in my application.
It's hard to explain so i will try my best by using some pics :-)
I've got an MVVM-based application which contains a shellview (Window) and a subviews (UserControl)
On startup the shellviewmodel creates 2 instances of the subview which were kept in a collection and this one is bound to the Itemsource property of a combobox.
by switching the selection of the combobox the current view of the shellview is changed.
The subview contains the Viewport and a 3D Model.
<HelixViewport3D Grid.Row="1" ZoomExtentsWhenLoaded="True"
ShowCoordinateSystem="{Binding ElementName=cbxShowDimensions, Path=IsChecked}">
<SunLight/>
<ns:Component3D
Length="2400"
Width="1800"
Thickness="25"
ShowMeasurements="{Binding ElementName=cbxShowDimensions, Path=IsChecked}"/>
<SunLight/>
</HelixViewport3D>
As you can see the ShowCoordinateSystem-Property of the Viewport and the ShowMeasurements-Property of the 3D-Model are bound to a checkbox
Now the problem:
View one is updating properly
View 2 does not only the coordinate system does.
Missing dimensions :-(
any reason why model importer doesnt support resources
mocaiv wrote at 2014-02-05 14:55:
objo wrote at 2014-02-05 15:16:
https://helixtoolkit.codeplex.com/workitem/10026
3ds Model'ss UVs Load Wrong
ZeroSigma wrote at 2013-03-13 18:42:
This is the code I use to load the model and assign the texture:
_currentModel = ModelImporter.Load("../../Models/planetCube.3ds");
Model3DGroup modelGroup = (Model3DGroup)_currentModel;
GeometryModel3D model = (GeometryModel3D)modelGroup.Children[0];
var texture = new ImageBrush();
texture.ImageSource = new BitmapImage(new Uri(@"../../Textures/uvTest2.png", UriKind.Relative));
model.Material = new DiffuseMaterial(texture);
Here are the files:http://dl.dropbox.com/u/43365724/planetCube.3ds
http://dl.dropbox.com/u/43365724/uvTest2.png
ZeroSigma wrote at 2013-03-16 08:22:
Just set ViewportUnits on the ImageBrush to Absolute! :)
objo wrote at 2013-03-17 21:50:
The
StudioReader class already sets the ViewportUnits to
Absolute, so I don't think any change is necessary in this library.
Cloth Simulation from 3D Object
charismatubagus wrote at 2013-02-20 06:49:
I would like to know how I can load 3D Cloth Simulation file such as .obj from external software like Blender. Please reply with sample codes. Thanks a lot.
objo wrote at 2013-03-12 11:47:
ObjReader class. The Read method will return a
Model3D. I don't know of any 'cloth' properties in the .obj file format, can you provide a link?adrianreza wrote at 2013-03-25 03:51:
objo wrote at 2013-04-15 12:57:
VerletIntegrator may be reusable, but I will probably move this out of the library soon. I think you need a real 3D physics engine if you need to solve more advanced models. The cloth example was just a small test on WPF3D performance
based on Thomas Jakobsens 'Advanced Character Physics' article. The Kinect sensor is not supported in the toolkit (I don't want to add a reference to the Kinect SDK), but there is an example how to use Kinect with the toolkit!
Issue in FindAnyPerpendicular
rys322 wrote at 2012-02-03 16:55:
Objo,
1. First off thank you for all of your hardwork, helixtoolkit is truly amazing.
2. I believe I have found a bug in the FindAnyPerpendicular function of the Vector3DExtensions class. When called by AddTube the function can sometimes bombs out due to the Vector3D n being comprised of very small numbers and so the CrossProduct returns nan. I was able to resolve this issue by adding the line
n.Normalize();
as the first line of the FindAnyPerpendicular function. This does leave n normalized, so it might be better to create a copy of n first and normalize the copy and use that for calculating the crossproduct.
3. I was also wondering if there is a way to force the a helixviewport to repaint or refresh. I have found that when I make changes and the mouse isn't over the toolkit the changes in my models are not shown until I mouse over the helixviewport.
Thanks,
Jordan
objo wrote at 2012-02-05 07:00:
#1: thank you!
#2: thanks for the bug report! See change list 74632. It seems it is not necessary to create a copy of the input vector first. I added some unit tests that also check that the input vector is unchanged.
#3: no there is no repaint/refresh command in HelixViewport3D or System.Windows.Controls.Viewport3D. There should be no need for it. Are you experiencing this with any of the properties of the Visual3D objects in this library? Then check that I have not forgot a property changed callback that updates the underlying model!
Possible bug in OBJ importer ?
Rogad wrote at 2014-02-26 15:12:
I have an .OBJ model with 5 groups.
The five groups use a combination of materials.
One group may refer to more than one material.
The .OBJ file contains 33 references to these materials within the 5 groups.
When I load the OBJ file via Helix I end up with a model with 33 groups rather than the expected and desired 5 groups.
It seems the importer is making groups/children from each material rather than the OBJ file group.
Is this behaviour intended ?
It makes it impossible to run code on a single group, because its been split up.
When viewed in the model viewer the model appears as desired so there is no problem with mapping the textures.
Rogad wrote at 2014-02-26 15:43:
Rogad wrote at 2014-02-26 18:19:
I changed my mind again. I think I was on track when I was suggesting the importer was making too many groups.
Because I can now answer this question :
objo wrote:
Can a group contain meshes with different materials?The answer is yes a group can contain meshes with different materials :)
In that case it is possible that the importer adds a new model for each mesh. The output model could be changed to a hierarchy, where the first level correspond to the groups.
If that could be be changed to a hierarchy as you suggest then that may work for the best.
Rogad wrote at 2014-02-26 22:35:
I was concerned that implementing the hierarchy might break a lot of people's code.
I overcame my problem with multiple groups by de-fragmenting my model before I import it into Helix.
I think I have to live with a mesh being broken into groups to suit the materials.
So really it's up to you if you want to change the way it works, though my vote would go for a hierarchy.
Error with PepitaGet.RestorePakackagesTask
GreenGiant83 wrote at 2013-02-12 14:06:
Error 1 The "PepitaGet.RestorePackagesTask" task could not be loaded from the assembly D:\Dropbox\Programming\CSharp\Examples\helixtoolkit_8c0d58aa0295\Source\Examples\ExampleBrowser..\Tools\Pepita\PepitaGet.dll. Could not load file or assembly 'file:///D:\Dropbox\Programming\CSharp\Examples\helixtoolkit_8c0d58aa0295\Source\Examples\Tools\Pepita\PepitaGet.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. D:\Dropbox\Programming\CSharp\Examples\helixtoolkit_8c0d58aa0295\Source\Examples\ExampleBrowser\ExampleBrowser.csproj 674 5 ExampleBrowser
objo wrote at 2013-02-12 22:06:
When the solution is in the ~/Source/ folder, the correct path is
<UsingTask TaskName="PepitaGet.RestorePackagesTask" AssemblyFile="$(SolutionDir)..\Tools\Pepita\PepitaGet.dll" />
Customer support service by UserEcho