Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Aug 02 18:07

    holance on develop

    Update CHANGELOG.md (compare)

  • Aug 01 21:58
    holance closed #1623
  • Aug 01 21:58

    holance on develop

    Fix topmost group is not render… Merge pull request #1624 from h… (compare)

  • Aug 01 21:58
    holance closed #1624
  • Aug 01 20:44
    holance labeled #1622
  • Aug 01 20:44
    holance labeled #1623
  • Aug 01 20:44
    holance labeled #1623
  • Aug 01 20:44
    holance opened #1624
  • Jul 31 09:11
    Zaug49 commented #1622
  • Jul 30 17:44
    chrkon commented #1622
  • Jul 30 07:45
    Zaug49 commented #1622
  • Jul 29 21:08
    chrkon commented #1622
  • Jul 29 21:05
    chrkon opened #1623
  • Jul 29 17:12
    Zaug49 commented #1622
  • Jul 29 17:03
    holance commented #1622
  • Jul 29 16:02
    Zaug49 commented #1622
  • Jul 29 13:20
    Zaug49 commented #1622
  • Jul 29 13:20
    Zaug49 commented #1622
  • Jul 29 07:42
    chrkon commented #1622
  • Jul 28 12:29
    Zaug49 reopened #1622
Shreyasj96
@Shreyasj96
@holance The animations of .glb files are rendered slower(Even if the original animation while the time of creation is running at normal speed). Do we need to change any property to adjust the animation speed?. I don't see this issue with .fbx files tho.
Lunci
@holance
@Shreyasj96 Could you provide same sample model for us to debug?
Shreyasj96
@Shreyasj96
@holance Hi..Do you have 3D Viewer installed on your PC?. If yes, on opening you will see a Bee.glb (the default file). You can also test for an existing .fbx file by converting it into .glb and then loading it.
Shreyasj96
@Shreyasj96
Link: https://free3d.com/3d-model/wolf-rigged-and-game-ready-42808.html
I downloaded the gltf zip file for testing.
Tai Le
@atlesg

Hi!

Assume I have a model like this in Viewport3D. Now I want to have a Line or a Ray from the up high to bottom plane (Z = infinity → Z = 0). I want to return the intersection point of the ray/line and the the first facet it touches (probably the facet on top of the model)
How can I do that as I probably search around google but no solution so far.

I did try:

        for (int i = 0; i < myPaintModelMeshGeometry3D.TriangleIndices.Count; i = i + 3)
        {
            int index1 = myPaintModelMeshGeometry3D.TriangleIndices[i];
            int index2 = myPaintModelMeshGeometry3D.TriangleIndices[i + 1];
            int index3 = myPaintModelMeshGeometry3D.TriangleIndices[i + 2];

            Point3D point1 = myPaintModelMeshGeometry3D.Positions[index1];
            Point3D point2 = myPaintModelMeshGeometry3D.Positions[index2];
            Point3D point3 = myPaintModelMeshGeometry3D.Positions[index3];
            Vector3D vectorA = point2 - point1;
            Vector3D vectorB = point3 - point1;

            Vector3D normal = Vector3D.CrossProduct(vectorA, vectorB);
            normal.Normalize();

            Plane3D facet = new Plane3D();
            facet.Normal = normal;
            facet.Position = point1;

            Ray3D ray3D = new Ray3D();
            ray3D.Direction = new Vector3D(0, 0, 1);
            ray3D.Origin = new Point3D(250, 0, 0);

            Point3D? IsIntersection = facet.LineIntersection(ray3D.Origin, ray3D.Origin + ray3D.Direction * myPaintModelBoundingBox.SizeZ);
          }

But the result is a lots of "intersection" points since the Plane3D spreads to infinity, so each iteration of the facet cut the ray at one point....
image.png

Lunci
@holance
@atlesg You need to use ray intersect with triangle instead of plane. Collision.RayIntersectsTriangle
Tai Le
@atlesg

@atlesg You need to use ray intersect with triangle instead of plane. Collision.RayIntersectsTriangle

Thank you! I will take a try!

Edit: is that method only usuable in SharpDX? I'm not using SharpDX so I can't generate the code for that :(

Lunci
@holance
@Shreyasj96 It is a bug from assimp itself. assimp/assimp#3162
Lunci
@holance
If I load the wolf fbx file, the animation speed is correct. Seems like the Assimp version used by the Assimp.Net is having issue with gltf or glb.
Gravemind2401
@Gravemind2401
in TransformManipulator.cs under private void OnTargetChanged(Element3D target) is there a particular reason the event subscribe for SceneNode.TransformChanged is commented out? will it cause problems if I enable it again in my custom manipulator?
i have the target object's transform bound to my model so it can get changed by both the manipulator and by textboxes with coordinates in them but by default the manipulator doesn't move when the transform gets changed by another source
Gravemind2401
@Gravemind2401
nevermind i found out why. moving the manipulator sets off the transform changed event which makes everything get called twice
Gravemind2401
@Gravemind2401
i just put a if (isCaptured) return; in the event handler so it only gets run if some other function changes the transform and that seems to do the trick
Shreyasj96
@Shreyasj96
@holance Oh I see. Was it fixed. It looked it it was fixed here assimp/assimp#3383 . Even I tried manipulating the importer.Configuration.TickesPerSecond, no improvement.
Shreyasj96
@Shreyasj96
Looks like it will be merged in the next release.
Gravemind2401
@Gravemind2401
what would be the best way for a custom element to dynamically show/hide itself when the camera moves? I have a custom element type that inherits GroupElement3D, so i was thinking maybe override OnCreateSceneNode and provide a custom scene node that makes itself renderable or not.
I found that I can override bool CanRender(RenderContext context) but im not sure how often this gets called or if thats the right place to do it
theres also bool TestViewFrustum(ref BoundingFrustum viewFrustum) which might work if it gets called every time the camera moves and hence the frustrum changes
what causes these to get called, and am i even looking in the right place?
Gravemind2401
@Gravemind2401
just saw void Update(RenderContext context) too which may be more appropriate?
Lunci
@holance
All those are called for each rendering. @Gravemind2401
Gravemind2401
@Gravemind2401
by “each rendering” do you mean it gets called for every node on every frame? is there a particular one that would be best suited for visibility testing? what do the return values do for the two bool ones?
@13134423523 you mentioned you can use a logarithmic depth buffer, is this on by default and if not how do you enable it and tune it? do you have some code you can share?
Lunci
@holance
@Gravemind2401 Depends on what property you want to test. Either can render or frustum test will work.
Gravemind2401
@Gravemind2401
so if i return false the node just doesnt get drawn for that render pass? sounds like what i need, thanks
Lunci
@holance
@Gravemind2401 Yes
Dimoniums
@Dimoniums
Hi, im a beginner developer. I started putting together a post processor in WPF with the Helix Toolkit. I quickly realized that I need SharpDX for the VertexColor . When I swapped to this part of the toolkit I am no longer able to bind the "ItemSource" property of the viewport. What is the right way to programmatically add objects to the viewport using Data Binding?
Dimoniums
@Dimoniums
Found the solution on SampleDemo
<hx:ItemsModel3D ItemTemplate="{StaticResource Geometry3DTemplate}" ItemsSource="{Binding HelixObjects}"/>
With a converter <hx:MeshGeometryModel3D Geometry="{Binding Geometry}" Transform="{Binding Transform}" Material="{Binding Material}"/>
Gravemind2401
@Gravemind2401
is there a way to save the current viewport contents using assimp? i thought i saw a function for it when i was poking around a while back but now i cant find it
Gravemind2401
@Gravemind2401
found it under HelixToolkit.SharpDX.Core.Assimp in the source code but im using the HelixToolkit.Wpf.SharpDX package so its not available
Gravemind2401
@Gravemind2401
oh its also under HelixToolkit.Wpf.SharpDX.Assimp but apparently still doesnt exist in the package im using
oh. its a separate package. nvm
Åse Maj Håkonsbakken
@bugbiter
Using sharpDX wpf, is there a way to separate grouped entities in an imported model mesh (from e.g. an .stl file), so that they can retrieve their names and can be assigned different materials. Autodesk Meshmixer, for instance, has a command "edit -> separate shells", which does this successfully for the files I am testing with.
Lunci
@holance
@bugbiter Helix toolkit is a presentation library. There is no advanced meshing algorithm provided. You need to use separate meshing library to achieve what you need.
Federico Rossi
@artipo
@holance
Hi, I found the time to came back to the Billboard ScreenSpace HitTest problem.
I've updated my project to the 2.14 version of the package and I was able to make it works.
I've also tried to use "Mouse3DMove" but without success. Should it works the same way as "Mouse3DDown" does?
Thank you very much for all the work you put into this!
Federico Rossi
@artipo
Ok, I've looked at the code and it doesn't seems like "Mouse3DMove" could work as I intend it.
That's because it needs "Viewport3DX.currentHit" set, but that only occurs when a click is performed.
So I need a mouse click to raise "Mouse3DMove".
Lunci
@holance
@artipo Yes, it doesn't support mouse move without mouse down first. Otherwise it has to do hit test during any mouse movement, which may cause performance issue. You can implement mouse move hit test yourself if the performance is acceptable.
Federico Rossi
@artipo
Make sense, thank you!
seanLCS
@seanLCS
does anyone have experience with the Bindable Translate Manipulator? I am having a lot of issues, and the latest seems like a bug. My issue is with the offset. I successfully bound the manipulator to a visual3d object. If I do not set the offset, the manipulator shows up at the origin of my viewport, but it works just as expected. If I attempt to use the origin to move the manipulator to the center of my visual, it works the first time the visual is set. the second time I try to set the visual, I get an "invalid cast" when the window propertychanged event is raised and it tries to get the offset, which is a vector3D within my visual.
Jordan Chapman
@Nordaj
Whats the easiest way to draw points in clip or screen space? It's really just for debugging purposes. Using PointGeometryModel3D and making it's node's model matrix the cameras VP^-1 hasn't been working.
I guess come to think of it, might have to do with PointGeometryModel3D's billboarding
might just construct a 3d mesh manually because i dont see any way to disable that. if theres an easier strat im unaware of please lmk
Gravemind2401
@Gravemind2401
is there any way to use compressed vectors in Helix? i mean the direct x vectors like DecN4, DHenN3 etc that are stored in a uint or two shorts
on a similar note, when providing compressed texture data is there any way to disable transparency on a material so it ignores the alpha channel? i have compressed textures but i feel like decompressing them to remove the alpha channel is eating a lot of memory
or does helix decompress them anyway?
im trying to minimize memory usage by keeping things in their compressed state as much as possible
Gravemind2401
@Gravemind2401
@Nordaj if you need to outline things or make markers that point to certain locations, you can get the viewport's RenderContext and it has a GlobalTransform.ViewProjection which can be used to project points from world space to screen space. i used it to project the object bounding box so i could calculate its 2d rect bounds on the viewport. Im not sure about the drawing though, i only did the transforming.
i used it like SharpDX.Vector3.Project({myVector}, 0, 0, context.ActualWidth, context.ActualHeight, 0, 1, context.GlobalTransform.ViewProjection)
Jordan Chapman
@Nordaj
I got the view and projection matrices through a camera object which should be same matrices