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!
0

Coordinate system

Anonymous 10 years ago 0
This discussion was imported from CodePlex

lhs wrote at 2012-01-20 11:34:

Hi,

Though this is a great piece of work, I just can't figure out why is z axis pointing up. That just looks so wrong to me, am I missing something?


objo wrote at 2012-01-20 19:03:

Yes, Z is the default up direction in this library, but both HelixViewport3D and CameraController also supports Y as up direction.

I have mostly used this library for engneering/math projects, that's why I chose this convention. (I know it is common in computer graphcis to use Y up, and the default UpDirection of Media3D.ProjectionCamera is 0,1,0)


lhs wrote at 2012-01-20 19:20:

Thanks for reply.

I just thought that it was WPF related, so Y should be up...

What is the easiest way to switch the logic, without rotating models or going through every line of code?


objo wrote at 2012-01-20 19:23:

sorry, I forgot:

set ModelUpDirection="0,1,0" on your HelixViewport3D.

See the UpdirectionDemo example.


lhs wrote at 2012-01-20 19:46:

Tried that, but I get right view instead of front view. Still need to rotate models, which will mess up my transforms (long story...).

Never mind, I thought that you could save me some time, but I guess that I will have to do it myself.

Thanks anyway. Keep up the good work.


objo wrote at 2012-01-26 19:50:

sorry, I don't see the problem here. Do you need a left handed system? Let us know if there is a bug in the handling of the up direction!


przem321 wrote at 2012-01-28 00:42:

I guess the problem is that the view-cube is a little bit messed up. Usually, in graphics libraries like OpenGL and WPF, which both use a RHS (right-handed coordinate system) the Z-axis points towards the camera, the Y-axis to the sky and the X-axis to the right.  In a LHS system (like Direct3D) the Z-axis points away from the camera. In the Helix-Viewport generally everything works well except the view-cube which shows an R instead of F, B instead R, and so on, and the default camera. But one can customize the cube and the camera anyway. ...

Well, this is not a bug and also a minor issue. Personally, I would also prefer the have the front direction looking along the negative Z-axis as the very default setting, just because this is standard, not only in WPF, but also OpenGL... well I know, there is no real standard, Maya handles it differently, Blender and 3D Studio too, in truth this topic is a mess... just for this reason I stick to the coordinate-system of the libraries, and for WPF it is like explained. 

Anyway, lhs, you don't have to play around with your model transforms (if the model is in RHS), you just have to get used to the view-cube and, I recommend it, change the default camera position to something like 

 

            view.Camera.Position = new Point3D(4, 2, 16);
            view.Camera.LookDirection = new Vector3D(-4, -2, -16);
            view.Camera.UpDirection = new Vector3D(0, 1, 0);

 

Btw, we have already elaborated about the default camera here: http://helixtoolkit.codeplex.com/discussions/286186

 

PS: Maybe one could add a property to set the 'front-direction' just analogous to the 'up-direction' property? This shouldn't cause problems since the third axis would be derived automatically according to the CS?


objo wrote at 2012-01-29 09:15:

Great post! How would you implement support for a front-direction property? Apply a ScaleTransform3D(1,1,-1) to the model? Also note that there is a ViewCubeFrontText property in HelixViewport3D that can be used if you need to change the text on the faces of the view cube. 


przem321 wrote at 2012-01-31 04:23:

Yes, I think changing the text of the view-cube is the simplest way to achieve the goal. I wouldn't work with any additional transforms, the front-direction property should just imply how to set up the view-cube, i.e. setting the model-up and front-direction should imply how to setup the view cube naming, etc. This is basically not a really important issue, just cosmetics. 


RobPerkins wrote at 2012-07-05 09:22:

I've been reading and using Helix for awhile now and I'm very pleased so far. 

One thing I do need is a way to transform the coordinate system to an RHS. The display requirements I have are for X increasing to the right, Y increasing "into" the screen, and Z increasing up. It's said to be the coordinate system used by draftsmen. The one I see "by default" is a left-hand system with Y increasing towards the user. 

Is it possible to set properties for world coordinates in a Z-up RHS?  Possible to subclass HelixViewport3D for that? What approach would you suggest? Unless I'm seeing this wrong? 


objo wrote at 2012-07-07 00:48:

Isn't the ProjectionCamera only supporting LHS? I have not studied the code yet, may be wrong...

If a MatrixCamera is needed to support RHS the camera controller may need some changes.. 

I found simple explanations to LHS and RHS projection matrices in this presentation: http://users.ece.gatech.edu/lanterma/mpg10/mpglecture04f10_3dto2dproj.pdf

Direct3D has LH and RH versions of all the projection functions, e.g. http://msdn.microsoft.com/en-us/library/windows/desktop/bb204936(v=vs.85).aspx


RobPerkins wrote at 2012-07-07 01:02:

Let's see..

Helix appears to rotate the WPF default 90 degrees CCW about X, so that Z is up. I need that much, plus a -Y transformation. I can compute that at load and apply a reverse transformation during hit testing, that part is no problem.

I just need the coordinate system axes graphic to also invert the Y arrow, and I'm good to go.


przem321 wrote at 2012-07-26 15:41:

The link you have posted is somewhat misleading. WPF and OpenGL both use the RHS!!! This applies to the HelixToolkit too.


objo wrote at 2012-08-09 01:02:

Was getting confused here. Agree that WPF use RHS coordinate system for the cameras!

I see there is a need to create an example showing the different configurations...

See http://helixtoolkit.codeplex.com/workitem/9962


RobPerkins wrote at 2012-08-09 02:42:

I agree! I'm confused myself and was about to ask, with the "default" axis arrows, which color is x, which is y, which z...

I'm not the one to write that demo, though, in the confused state I'm in...


RobPerkins wrote at 2012-10-02 04:52:

RobPerkins wrote:

I agree! I'm confused myself and was about to ask, with the "default" axis arrows, which color is x, which is y, which z...

I'm not the one to write that demo, though, in the confused state I'm in...

Not confused any longer. I'd modified the axis arrows and caused my own pain. It's RHS with no problems at all once I cleared that up. 

0

how to create elliptic cylinder?

Anonymous 10 years ago 0
This discussion was imported from CodePlex

seiya wrote at 2013-08-17 22:14:

is these simple way to create elliptic cylinder?

objo wrote at 2013-08-17 22:43:

use a ScaleTransform3D on a cylinder!

seiya wrote at 2013-08-18 06:22:

that's great!
thank you very much!
0

Problem importing Materials

Anonymous 10 years ago 0
This discussion was imported from CodePlex

Nneme wrote at 2012-01-09 14:12:

Hi, how can I import accompany obj materials (.mtl)?

The documentation for "Importing" is currently empty.

The source file too does not provide any sample code only executable.

 

 


objo wrote at 2012-01-09 19:35:

Download the latest version of the source code from the "Source Code" tab. The "HelixToolkit-examples.zip" download only contains the binaries.

Placing the material files (.mtl) and textures in the same folder as the .obj file should work. Tga textures must be converted to jpeg or png.

0

future plans with WPF and sharpdx

Anonymous 10 years ago 0
This discussion was imported from CodePlex

glgweeke wrote at 2012-11-02 09:27:

Hi,

what are your plans with the sharpdx based engine.

Will it be possible to see all your current examples based on sharpdx in the future?

Have you made some performance test?

 

 

Best regards,

Gregor


objo wrote at 2012-11-02 22:29:

yes, I created an experimental fork to test SharpDX! A new world is opening up when getting access to more advanced DirectX features :)

Sorry, I have no plans to convert all examples of this library - they are made for WPF 3D!


RobPerkins wrote at 2012-11-03 18:10:

+1 for this! (I think any demos or examples would have to be significantly rewritten)


glgweeke wrote at 2012-11-03 19:53:

Hi,

examples are not so importend.

The use of DirectX for beginners is to hard.

So your work can help many developers to get quick started with DirectX and C#.

Great work!

Thanks

0

Disable resize of TextBillboardVisual3D

Anonymous 10 years ago 0
This discussion was imported from CodePlex

mplisov wrote at 2013-02-23 22:03:

Hello,

Is it possible to disable resize of TextBillboardVisual3D on camera zoom or make TextVisual3D always face the camera like TextBillboardVisual3d do?

objo wrote at 2013-03-12 12:09:

I think this should be implemented as a new class, I don't want to add more features into BillboardTextVisual3D. The code you need to change is in the BillboardGeometryBuilder.GetPositions method.
0

Compute Frustum intersections

Anonymous 10 years ago 0
This discussion was imported from CodePlex

ejleigh wrote at 2012-05-30 15:39:

Is there a correct way to compute the coordinates of the intersection of the frustum with a plane positioned somewhere between the near and the far planes? I think this should be the same as the viewport rectangle, but I can't seem to get it right. As you pan, zoom and rotate within the scene I need the coordinates of the 4 corners of the view so I can query a quadtree for assets.


objo wrote at 2012-05-30 23:16:

I was planning to add a "projected grid" example, but have not had the time to do it yet...
http://fileadmin.cs.lth.se/graphics/theses/projects/projgrid/

If you have an example where we can help to debug, feel free to create a fork!

0

PieSliceVisual3D not shown in ViewCubeVisual3D

Anonymous 10 years ago updated by ไอยดา สุรีวงค์ 4 years ago 1
This discussion was imported from CodePlex

Elemental wrote at 2011-11-11 14:05:

Hello,

I have version 72068 and there seems to be a problem with the ViewCube.

The cube is shown, but the PieSliceVisual under the cube not.

 

Is this a bug?

 

Best Regards

 


objo wrote at 2011-11-12 00:08:

You are right, I had introduced a bug when refactoring the base class. Should be corrected now!

thanks!

0

BoundingBoxVisual3D Performance Issues

Anonymous 10 years ago 0
This discussion was imported from CodePlex

Nomad101 wrote at 2012-09-27 05:46:

So I just started using the Helix toolkit and honestly it is amazing and has made my life a lot easier. However I noticed a fairly significant performance slow down using the BoundingBoxVisual3D type. I did a test using the CubeVisual3D and the BoundingBoxVisual3D with ten of each dynamically moving as well as a dynamic camera look direction. The test yielded a massive change in performance between the two types. I was thinking of a way around this and was wondering if anyone had any thoughts on what I was thinking. 

Since the BoundingBox uses A set of lines to make a cube it has a good amount of overhead for each object. What if instead it used a custom Gradient Brush that went from a colored outline to a transparent center. I Think this could work out fairly well Let me know what you think.

The only drawback is you would need to individually paint each face, but could still easily be less overhead than the 12 lines per BoundingBox. 

0

Performance and BoxVisual3D

Anonymous 10 years ago updated by ไอยดา สุรีวงค์ 4 years ago 1
This discussion was imported from CodePlex

peterthesaint wrote at 2014-08-26 13:17:

Hello,

I am trying to develop an engineering modeling program where all objects are either boxes or rectangels. I decided to use BoxVisual3D but with bigger number of objects, say >1000 I notice significant drop in performance. For curiosity I have installed AB4D PowerToys and with that library I can insert about 3-5 times more Boxes3D without the drop in performance. I have done some tests e.g. created a fresh project with Helix and tweaked some issues like lights and some other common performance enhancing steps but significant difference is still noticeable. Does anybody have any idea why and what can be done about it?

Peter
0

Default zoom

Anonymous 10 years ago 0
This discussion was imported from CodePlex

udaykm1986 wrote at 2013-09-17 15:21:

During control load event, the property ZoomExtentsWhenLoaded="True" is used for setting default zoom and makes HelixViewport3D content fit to it. If we need to handle zoom even before control is loaded then how to set zoom value?

objo wrote at 2013-09-25 09:01:

You can set the properties of the camera before the control is loaded. You cannot use any of the zoom commands that relate to the size of the view before the control is loaded.