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!
+1

What is 192.168.0.1

Dianna Gron 10 years ago updated by Fdjjj Duuree 4 years ago 133

A default IP used by d link, netgear and other popular router manufacturers to find themselves over the network is 192.168.0.1 IP. Users can enter this address into the address bar of their favorite web browser on their computer to get access to the router settings page. There they can change the default password of the router, security settings and Wi-Fi settings of their network. Even they can monitor the connection of their router to the network, reset the connection settings and router or change the firewall settings on the settings webpage. People do not need an active internet connection to access their router settings page. The only thing they need to do is typing the IP address used by their router for administration. The address could vary depending on the router manufacturer.


How can people find the router IP address


People need to perform the following steps to check if the router is using the above mentioned private IP address.

  • Click on start button to get the start screen. People who are using windows 8 or late can click on the windows button.
  • Next they need to input cmd in the field of search programs. They should see a cmd icon included in the list. c
  • Click on cmd icon.
  • Next type ipconfig in the appropriate field and press enter.
  • People should look for a set of numbers next to default gateway entry. The set of numbers separated by decimal is the router IP address.
  • How to change the password of router


    It is very important to change the password of router so that no one will be able to access as well as configure the router. People should make sire to note down the username and password. Here are the steps they need to follow for changing the router password.

  • First people have to login to their router control panel. They have to type in the default IP address of the router to get the 192.168.0.1 admin screen. Individuals who do not know the default IP address of the router can get help from online forums that discuss on the issues regarding router configuration.
  • The user will see a username and secret key prompt. They need to enter the required details of the router and tap on the login button. The router administration interface page will load.
  • Users have to look for an administrative tab or security tab in the administration interface. There they will find a change password link. Click on the link and type the new password two times.
  • People should make sure that the password is strong. They can even use online password generator to make the password of router stronger. Once they found the IP address and changed the password, they can configure router settings. They can make some adjustments such as modifying LAN configurations, protection and Wi-Fi connections. Users of routers will feel good when they come to know that they can also control specific configurations of router.


    Source: http://planet.infowars.com/technology/192-168-0-1-about-a-private-ip-address
    +1

    I can't use Helix toolkit to viewport multiple model part at the same time

    Philip 10 years ago updated by web-ufaxs 1 year ago 0

    Hi Everyone,

    I've got an existing Winsform application that model a multi-joint robotic arm, that allows the user to use a trackbar to rotate each joint for a certain degree (snipping of the winsform app below).


    Since I've worked out the TranslateTransform and RotateTransform relationship in 2D drawing, I did like to convert it to 3D. I heard that helix toolkit is very good at 3D modelling things. Since I never used it before, so I would like to give helix toolkit a try. What I'm doing is draw the robot arm in wpf and use elementhost to host the drawing in winsform, and in the end aim to achieve the same results as above but in 3D. Currently I applied the same logic I used for the 2D modelling, but with set rotation angle and translation length, as well as I'm trying to get 2 joints connected.

    Yet when I run my code, instead of both joints being display (similar to picture above), only 1 joint is present (as shown in picture below).

    I don't understands what I did wrong, and since there is very limited documentation available I can't debug and solve the problem myself. So I hope to seek help and solution here.

    below is my code:

    using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.IO.Ports;
    using System.Windows.Threading;
    using HelixToolkit.Wpf;
    using HelixToolkit;
    using System.Windows.Media.Media3D;

    namespace _3DModel
    {
    /// <summary>
    /// Interaction logic for Drawing.xaml
    /// </summary>
    public partial class Drawing : UserControl
    {
    HelixViewport3D viewport = new HelixViewport3D();

    public Drawing()
    {
    InitializeComponent();
    Draw();
    }

    private void Draw()
    {

    #region Camera Viewpoint of the 3D Model
    //camera
    this.ArmCanvas.Children.Add(viewport);
    viewport.DefaultCamera = new PerspectiveCamera();
    viewport.DefaultCamera.Position = new Point3D(0, 600, 600);
    viewport.DefaultCamera.LookDirection = new Vector3D(0, -600, -600);
    viewport.DefaultCamera.UpDirection = new Vector3D(0, 1, 0);

    //lighting
    DefaultLights light = new DefaultLights();
    viewport.Children.Add(light);
    #endregion
    Model3D joint2, joint3, joint4, joint5, joint6, joint7, baselink;
    ModelVisual3D model3d = new ModelVisual3D();
    Model3DGroup group = new Model3DGroup();
    ModelImporter import = new ModelImporter();

    baselink = import.Load(@"C:\Users\tombf\Desktop\Winsform 3D Model\Base Link.obj");
    joint2 = import.Load(@"C:\Users\tombf\Desktop\Winsform 3D Model\Link.obj");
    joint3 = joint2.Clone();
    joint4 = joint2.Clone();
    joint5 = joint2.Clone();
    joint6 = joint2.Clone();
    joint7 = joint2.Clone();

    viewport.Children.Remove(model3d);
    /*
    #region Base Link
    Transform3DGroup baseLinkMove = new Transform3DGroup();
    TranslateTransform3D baseLinkTranslate = new TranslateTransform3D();
    baseLinkTranslate.OffsetX = 0;
    baseLinkTranslate.OffsetY = 0;
    baseLinkTranslate.OffsetZ = 0;

    baseLinkMove.Children.Add(baseLinkTranslate);


    RotateTransform3D baseLinkRotate = new RotateTransform3D();
    baseLinkRotate.Rotation = new AxisAngleRotation3D(new Vector3D(0, 0, 0), 0);
    baseLinkMove.Children.Add(baseLinkRotate);
    baselink.Transform = baseLinkMove;

    group.Children.Add(baselink);
    model3d.Content = group;
    viewport.Children.Add(model3d);
    #endregion

    #region 1st Joint
    Transform3DGroup firstJointMove = new Transform3DGroup();
    TranslateTransform3D firstJointTranslate = new TranslateTransform3D();
    firstJointTranslate.OffsetX = 10;
    firstJointTranslate.OffsetY = 0;
    firstJointTranslate.OffsetZ = 0;

    firstJointMove.Children.Add(firstJointTranslate);


    RotateTransform3D firstJointRotate = new RotateTransform3D();
    firstJointRotate.Rotation = new AxisAngleRotation3D(new Vector3D(0, 0, 0), 10);
    firstJointMove.Children.Add(firstJointRotate);
    joint2.Transform = firstJointMove;
    group.Children.Add(joint2);
    model3d.Content = group;
    viewport.Children.Add(model3d);
    #endregion

    //viewport.Children.Add(model3d);
    */

    Transform3DGroup arm = new Transform3DGroup();

    TranslateTransform3D armTranslate = new TranslateTransform3D();
    RotateTransform3D armRotate = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 0, 1), 0));
    armTranslate.OffsetX = 0;
    armTranslate.OffsetY = 0;
    armTranslate.OffsetZ = 0;
    arm.Children.Add(armTranslate);
    baselink.Transform = arm;
    arm.Children.Add(armRotate);
    baselink.Transform = arm;
    group.Children.Add(baselink);
    model3d.Content = group;

    armTranslate = new TranslateTransform3D();
    armRotate = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 0, 1), 180));
    armTranslate.OffsetX = 20;
    armTranslate.OffsetY = 0;
    armTranslate.OffsetZ = 0;
    arm.Children.Add(armTranslate);
    joint2.Transform = arm;
    arm.Children.Add(armRotate);
    joint2.Transform = arm;
    //arm.Children.Add(joint2.Transform);
    group.Children.Add(joint2);
    model3d.Content = group;
    viewport.Children.Add(model3d);
    }
    }
    }


    +1

    [SharpDX] Why does my model look better when using the deferred RenderTechnique instead of e.g. Blinn/Phong

    Daniel Zibion 10 years ago updated by ก็หมวย นี่คะ 2 years ago 1

    Hello everyone,


    When visualizing geometry in the sharpDX viewport, I noticed that all the edges are very jagged and not smooth at all.


    Blinn Rendering

    Image 40


    Deferred Rendering

    Image 41

    This got a lot better when switching to the deferred rendering.

    Is this normal? Is there maybe a way to improve the anti aliasing for the default rendering that I'm not aware of?

    +1

    HelixToolkit.Wpf.SharpDX - Custom Shader

    Anonymous 12 years ago 0
    This discussion was imported from CodePlex

    eonxxx wrote at 2014-08-14 12:11:

    hi there a chance to use custom shaders in HelixToolkit.Wpf.SharpDX?
    how does it works, if so?

    do i need to use fx0.5 effects for it?

    is it possible to use generated (shaderbytecode.compilefromfile) bytecode?
    +1

    UnProject extension method in Viewport3DX

    Aparajit Pratap 11 years ago updated by ก็หมวย นี่คะ 2 years ago 0
    I am trying to use the UnProject extension method available on the Viewport3DX class in order to convert a 2D mouse coordinate to a 3D Point/Ray. I find that I'm able to accurately compute the ray/hit point only for mouse clicks on the X-axis but if I click on anywhere else on the grid the computed ray and hit point in 3D coordinates are off. Any idea on what could be missing here?
    +1

    Texture coordinates from ObjReader

    Anonymous 12 years ago updated by Kong Lee 4 years ago 15
    This discussion was imported from CodePlex

    Lolligeir wrote at 2013-03-22 18:08:

    Hey! Thanks for an awesome tool.

    I am reading some obj files for a ray tracer and I have managed to read the Points of each triangle and the normals but the texture coordinate don´t seem to be working correctly. This is how I am reading the file:
                ObjReader r = new ObjReader();
                Model3DGroup model = r.Read(modelUrl);
                GeometryModel3D gm1 = (GeometryModel3D)model.Children[0];
                MeshGeometry3D mg1 = (MeshGeometry3D)gm1.Geometry;
                Vector3DCollection normals = mg1.Normals;     
                System.Windows.Media.PointCollection textureCoordinates = mg1.TextureCoordinates;
                System.Windows.Media.Int32Collection indices = mg1.TriangleIndices;
                Point3DCollection points = mg1.Positions;
                
                
    
                for (int index = 0; index < indices.Count; index += 3)
                {
                    Point3D p0 = points[indices[index]];
                    Point3D p1 = points[indices[index + 1]];
                    Point3D p2 = points[indices[index + 2]];          
                    
                    Vector3D n0 = normals[indices[index]];
                    Vector3D n1 = normals[indices[index + 1]];
                    Vector3D n2 = normals[indices[index + 2]];
    
                    System.Windows.Point t0 = textureCoordinates[indices[index]];
                    System.Windows.Point t1 = textureCoordinates[indices[index + 1]];
                    System.Windows.Point t2 = textureCoordinates[indices[index + 2]];
    }
          
    This loads the correct points and normals but the texture coordinates come out wrong. Am I approacing this incorrectly? How do you read the correct texture coordinate for every face?

    The obj file I have been using (Removed text after vertices to get the objReader to read it) : http://cs.wellesley.edu/~cs307/tw/objects/cube-textures.obj

    Best regards,
    Viktor
    +1

    How to access different component from .3ds file

    Anonymous 12 years ago 0
    This discussion was imported from CodePlex

    GhufranZahidi wrote at 2012-11-20 10:04:

    Hi 

    I want to access multiple component from .3ds file by name and try to move particular component, is it possible if yes then give method name, please reply

    +1
    Under review

    HelixVisual3d not updating after created

    Rodrigo Basniak 12 years ago updated by Kong Lee 4 years ago 212
    Hi,

    I'm need to show a circular torus on the viewport. The closest option I found was the HelixVisual3D, but it has open ends. So I tried to create my own class to draw this, with a HelixVisual3D and two thin cones to close the ends. I used the classes from the Building Demo as reference, so I came up with this:

    public class TorusVisual3D : UIElement3D
    {
        public static readonly DependencyProperty AngleProperty = DependencyPropertyEx.Register("Angle", 90, (s, e) => s.AppearanceChanged());
        public static readonly DependencyProperty RadiusProperty = DependencyPropertyEx.Register("Radius", 0.35, (s, e) => s.AppearanceChanged());
        public static readonly DependencyProperty DiameterProperty = DependencyPropertyEx.Register("Diameter", 0.1, (s, e) => s.AppearanceChanged());

        private GeometryModel3D torus = new GeometryModel3D();
        private GeometryModel3D cap1 = new GeometryModel3D();
        private GeometryModel3D cap2 = new GeometryModel3D();

        public TorusVisual3D()
        {
            AppearanceChanged();

            Model3DGroup model = new Model3DGroup();

            model.Children.Add(this.torus);
            model.Children.Add(this.cap1);
            model.Children.Add(this.cap2);

            this.Visual3DModel = model;
        }


        public double Angle
        {
            get
            {
                return (double)this.GetValue(AngleProperty);
            }
            set
           {
               this.SetValue(AngleProperty, value);
           }
        }

        public double Radius
        {
            get
            {
                return (double)this.GetValue(RadiusProperty);
            }
            set
            {
                this.SetValue(RadiusProperty, value);
            }
        }

        public double Diameter
        {
            get
            {
                return (double)this.GetValue(DiameterProperty);
            }
            set
            {
                this.SetValue(DiameterProperty, value);
            }
        }

        private void AppearanceChanged()
        {
            Material mat = MaterialHelper.CreateMaterial(Utils.GetRandomColor());

            HelixVisual3D h = new HelixVisual3D();
            h.Origin = new Point3D(0, 0, 0);
            h.Diameter = Diameter;
            h.Turns = Angle / 360.0;
            h.Radius = Radius;
            h.Length = 0;
            h.BackMaterial = mat;
            h.Material = mat;
            h.UpdateModel();
            this.torus = h.Model;

            MeshBuilder cap1Builder = new MeshBuilder(false, false);
            Point3D p1 = new Point3D(0, Radius, 0);
            cap1Builder.AddCone(p1, new Vector3D(0, 1, 0), h.Diameter / 2, h.Diameter / 2, 0.0001, true, true, 40);
            this.cap1.Material = MaterialHelper.CreateMaterial(Colors.Yellow);
            this.cap1.Geometry = cap1Builder.ToMesh();


            MeshBuilder cap2Builder = new MeshBuilder(false, false);
            Point3D p2 = new Point3D(-1, 0, 0);
            cap2Builder.AddCone(p2, new Vector3D(1, 0, 0), h.Diameter / 2, h.Diameter / 2, 0.0001, true, true, 40);
            this.cap2.Material = MaterialHelper.CreateMaterial(Colors.Red);
            this.cap2.Geometry = cap2Builder.ToMesh();
        }
    }

    To draw it I'm using the following code: 

        TorusVisual3D t = new TorusVisual3D();
        t.Angle = m_angle;
        t.Radius = m_radius1;
        t.Diameter = m_radius2 * 2.0;
        t.Transform = new TranslateTransform3D(0, 0, 0);
        ModelVisual3D model = new ModelVisual3D();
        model.Children.Add(t);
        var container = new ContainerUIElement3D();
        container.Children.Add(model);
        viewport.Children.Add(container);

    The problem is that the Helix is drawn with the default values (Radius=0.35, Diameter=0.1 and Angle=90) and is never updated again. No matter what values I set on the Properties, it stays the same. The both cylinder are updated correctly, just the Helix isn't.

    What am I'm doing wrong?

    Thanks in advance,
    Rodrigo
    +1

    Storyboard animation

    Anonymous 12 years ago 0
    This discussion was imported from CodePlex

    xyxa wrote at 2012-07-14 15:56:

    Thanks so much for very useful toolkit.

    But unfortunately I could not create a storyboard animation via Blend for any MeshElement3D. It's strange, because I can create such animation for ModelVisual3D. What is the reason for this behavior and Is there any ways to solve it?

    +1

    MeshGeometryHelper Cut Method

    Anonymous 12 years ago updated by asim 4 months ago 2
    This discussion was imported from CodePlex

    badgerbadger wrote at 2012-07-26 16:50:

    I would like to modify the MeshGeometryHelper.Cut method so that it (also) meshes the opening created by the planar cut (i.e. currently the mesh is open at the location of the plane, I need a closed surface)

    Can anyone figure out a neat way of achieving this in the Cut method? (Objo? :) )  (maybe uncommenting some of the commented-code in the Cut method achieves this..?)

    Otherwise I guess I will have to get a contour of the planar mesh, attempt to mesh that surface and add to the Cut mesh - but a bit messy.


    objo wrote at 2012-08-09 00:59:

    Yes, you could change the cut method to also provide the contour(s). See the GetContourSegments...

    When you have the contour(s), you can use the MeshBuilder.AddPolygonByCuttingEars to triangulate by the cutting/ears method (easy algorithm, but not very efficient).


    badgerbadger wrote at 2012-08-09 10:41:

    Many thanks Objo, yes I ended up doing something similar but used the AddPolygon instead of CuttingEars version (which I'll now investigate). I meant to post my hack but moved on to the next problem. Here is the mk1 code ( meshOrig is the original mesh while cutMesh is after the plane cut has been applied; plane is the cut plane).

    I should add my code was not required to produce a nice mesh, it is only an intermediate step towards a bigger problem involving segmenting a mesh, so if others use it, it is worth investigating replacing AddPolygon (which applies a fan mesh)..

            private static MeshGeometry3D MeshPlaneCut(MeshGeometry3D meshCut, MeshGeometry3D meshOrig, Plane3D plane)
            {
                //Store the positions on the cut plane
                var segments = MeshGeometryHelper.GetContourSegments(meshOrig, plane.Position, plane.Normal).ToList();

                //assumes largest contour is the outer contour!
                IList<Point3D> vertexPoints = MeshGeometryHelper.CombineSegments(segments, 1e-6).ToList().OrderByDescending(x=>x.Count).First();

                //meshCut the polygon opening and add to existing cut mesh
                var builder = new MeshBuilder(false,false);
                builder.Append(meshCut.Positions, meshCut.TriangleIndices);
                builder.AddPolygon(vertexPoints);
               
                MeshGeometry3D mg3D = builder.ToMesh();

                return mg3D;
            }


    ulissespi wrote at 2012-12-24 08:06:

    I'm also interested in having a MeshGeometryHelper.Cut that as result creates a solid (non hollow) mesh.

    I changed the ApplyCuttingPlanesToModel method in the CuttingPlaneGroup.cs file, replacing the call   

    g = MeshGeometryHelper.Cut(g, p, n);

    by    

    g = MeshGeometryHelper.MeshPlaneCut(g, p, n);   

    to use the method described in the previous post, but obviously it didn't work as the parameters are not the same.

    Could you please give a bit more detail on how do you call your new method?

    (maybe have a piece of the calling code) 

     

    Or if someone else found another way of resolving this issue, other code examplesare wellcome.


    badgerbadger wrote at 2012-12-24 11:39:

    Hi Ulissepi - I should point out that my problem wasn't concerned with drawing a cut (and closed) mesh, only in calculating the mesh so that I could apply a contour algorithm to it. If you need to display the visual then something more sophisticated will be required.

    I've tried to pick out the relevant bits from my code. It's been a while so hopefully I have included everything relevant. Hope it helps!

    Geometry3D originalGeometry = model.Geometry;
    //create a copy of the mesh
    var g = originalGeometry as MeshGeometry3D;
    MeshGeometry3D gOrig = g.Clone();

    //Cut the Mesh and then apply the cutplane

    //cp, p & n are the cut plane (Plane3D) and the position (Point3D) and the normal (Vector3D) of the plane

    g = MeshGeometryHelper.Cut(g, p, n);

    g = MeshPlaneCut(g, gOrig, cp);

    GeometryModel3D gm3d = model.Clone();
     gm3d.Geometry = g;