<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>3DTools Forum Rss Feed</title><link>http://www.codeplex.com/Project/ListForums.aspx?ProjectName=3DTools</link><description>3DTools Forum Rss Description</description><item><title>New Post: 3DTools install</title><link>http://3dtools.codeplex.com/discussions/308473</link><description>&lt;div style="line-height: normal;"&gt;Once installed,&lt;br /&gt;
add as a Reference to your project:&lt;br /&gt;
Ex:&lt;br /&gt;
In Visual Studio WPF, &lt;br /&gt;
in your project, right-click &amp;quot;Reference&amp;quot;, &amp;quot;Browse&amp;quot;, then browse to the location that you saved the extracted 3D Tools to.&lt;br /&gt;
&lt;/div&gt;</description><author>aisha7</author><pubDate>Thu, 06 Jun 2013 13:35:18 GMT</pubDate><guid isPermaLink="false">New Post: 3DTools install 20130606013518P</guid></item><item><title>New Post: How to create a circle with known center point and perpendicular to a line?</title><link>http://3dtools.codeplex.com/discussions/428741</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hi, sorry for asking such a beginner question, I am a beginner in WPF 3D programming.&amp;nbsp;How to create a circle with known center point and perpendicular to a line? Thank in advance.&lt;/p&gt;
&lt;/div&gt;</description><author>chinh_nguyen</author><pubDate>Mon, 07 Jan 2013 11:34:41 GMT</pubDate><guid isPermaLink="false">New Post: How to create a circle with known center point and perpendicular to a line? 20130107113441A</guid></item><item><title>New Post: keyboard functionality</title><link>http://3dtools.codeplex.com/discussions/389570</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;How can I setup trackball to perform rotation instead mousebutton's press?&lt;br&gt;
&lt;br&gt;
I've tried creating a function similar to Track but something still not work correctly.&lt;br&gt;
&lt;br&gt;
Thank to all&lt;/p&gt;
&lt;/div&gt;</description><author>naryk</author><pubDate>Mon, 30 Jul 2012 14:26:13 GMT</pubDate><guid isPermaLink="false">New Post: keyboard functionality 20120730022613P</guid></item><item><title>New Post: create pipes</title><link>http://3dtools.codeplex.com/discussions/360824</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hello!&lt;br&gt;
I've created a 3d line adding points to a ScreenSpaceLines3D object.&lt;br&gt;
Is there a way to create a &amp;quot;pipeline&amp;quot; instead of a flat line???&lt;br&gt;
&lt;br&gt;
Thanks,&lt;br&gt;
&lt;br&gt;
Naryk&lt;/p&gt;
&lt;/div&gt;</description><author>naryk</author><pubDate>Mon, 25 Jun 2012 14:49:39 GMT</pubDate><guid isPermaLink="false">New Post: create pipes 20120625024939P</guid></item><item><title>New Post: Helix Toolkit (active WPF 3D controls project)</title><link>http://3dtools.codeplex.com/discussions/357683</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I'd just like to add a link to the excellent &lt;a href="http://helixtoolkit.codeplex.com/"&gt;
Helix 3D Toolkit&amp;nbsp;&lt;/a&gt;, which is a collection of controls and helper classes for WPF 3D. It is an active project that includes improved versions of everything from 3D Tools and a lot more. It is published under the Ms-Pl license, which is a bit more liberal
 that the 3D Tools license.&lt;/p&gt;
&lt;p&gt;I have been using the Helix 3D Viewport for nearly two years, and it works very well.&amp;nbsp;This 3D Tools project was an interesting start, but has not been active for many years, and finding Helix toolkit made it easy to stick with WPF 3D.&lt;/p&gt;
&lt;p&gt;So, definitely worth a look if you are interested in WPF 3D at all.&lt;/p&gt;
&lt;div id="_mcePaste" style="left:-10000px; top:0px; width:1px; height:1px; overflow:hidden"&gt;
&lt;h1 style="font-size:2.308em; margin:20px 0px 10px; padding:0px; border:0px; outline:0px; vertical-align:baseline; background-color:transparent; font-weight:lighter; font-family:'Segoe UI Light','Segoe UI','Tahoma Light','Arial Light',Helvetica,sans-serif; color:#7b4f9d"&gt;
Ms-PL&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>govert</author><pubDate>Wed, 30 May 2012 16:02:47 GMT</pubDate><guid isPermaLink="false">New Post: Helix Toolkit (active WPF 3D controls project) 20120530040247P</guid></item><item><title>New Post: WheelZoom</title><link>http://3dtools.codeplex.com/discussions/355203</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I rewrote the TrackBallDecorator to have Pan on left button, rotate on right and zoom on wheel.&lt;/p&gt;
&lt;p&gt;The rotation is a bit strange but the rest works ok:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;&lt;span style="color: green;"&gt;//---------------------------------------------------------------------------&lt;/span&gt;
&lt;span style="color: green;"&gt;//&lt;/span&gt;
&lt;span style="color: green;"&gt;// (c) Copyright Microsoft Corporation.&lt;/span&gt;
&lt;span style="color: green;"&gt;// This source is subject to the Microsoft Limited Permissive License.&lt;/span&gt;
&lt;span style="color: green;"&gt;// See http://www.microsoft.com/resources/sharedsource/licensingbasics/limitedpermissivelicense.mspx&lt;/span&gt;
&lt;span style="color: green;"&gt;// All other rights reserved.&lt;/span&gt;
&lt;span style="color: green;"&gt;//&lt;/span&gt;
&lt;span style="color: green;"&gt;// This file is part of the 3D Tools for Windows Presentation Foundation&lt;/span&gt;
&lt;span style="color: green;"&gt;// project.  For more information, see:&lt;/span&gt;
&lt;span style="color: green;"&gt;// &lt;/span&gt;
&lt;span style="color: green;"&gt;// http://CodePlex.com/Wiki/View.aspx?ProjectName=3DTools&lt;/span&gt;
&lt;span style="color: green;"&gt;//&lt;/span&gt;
&lt;span style="color: green;"&gt;// The following article discusses the mechanics behind this&lt;/span&gt;
&lt;span style="color: green;"&gt;// trackball implementation: http://viewport3d.com/trackball.htm&lt;/span&gt;
&lt;span style="color: green;"&gt;//&lt;/span&gt;
&lt;span style="color: green;"&gt;// Reading the article is not required to use this sample code,&lt;/span&gt;
&lt;span style="color: green;"&gt;// but skimming it might be useful.&lt;/span&gt;
&lt;span style="color: green;"&gt;//&lt;/span&gt;
&lt;span style="color: green;"&gt;//---------------------------------------------------------------------------&lt;/span&gt;

&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Controls;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Data;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Documents;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Media;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Media.Imaging;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Media.Media3D;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Shapes;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Input;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Markup; &lt;span style="color: green;"&gt;// IAddChild, ContentPropertyAttribute&lt;/span&gt;

&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; _3DTools
{
    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; TrackballDecorator : Viewport3DDecorator
    {
        &lt;span style="color: blue;"&gt;public&lt;/span&gt; TrackballDecorator()
        {
            &lt;span style="color: green;"&gt;// used so that we always get events while activity occurs within&lt;/span&gt;
            &lt;span style="color: green;"&gt;// the viewport3D&lt;/span&gt;
            _eventSource = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Border();
            _eventSource.Background = Brushes.Transparent;
            
            PreViewportChildren.Add(_eventSource);
        }

        &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt;     A transform to move the camera or scene to the trackball's&lt;/span&gt;
        &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt;     current orientation and scale.&lt;/span&gt;
        &lt;span style="color: gray;"&gt;///&lt;/span&gt; &lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span style="color: blue;"&gt;public&lt;/span&gt; Transform3D Transform
        {
            &lt;span style="color: blue;"&gt;get&lt;/span&gt;
            {
                &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: blue;"&gt;this&lt;/span&gt;.Viewport3D == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
                    &lt;span style="color: blue;"&gt;return&lt;/span&gt; Transform3D.Identity;
                &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Viewport3D.Camera.Transform;
            }
        }

        &lt;span style="color: blue;"&gt;#region&lt;/span&gt; Event Handling

        &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnMouseDown(MouseButtonEventArgs e)
        {
            &lt;span style="color: blue;"&gt;base&lt;/span&gt;.OnMouseDown(e);

            _previousPosition2D = e.GetPosition(&lt;span style="color: blue;"&gt;this&lt;/span&gt;);
            _previousPosition3D = ProjectToTrackball(ActualWidth, ActualHeight, _previousPosition2D);
            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (Mouse.Captured == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
            {
                Mouse.Capture(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, CaptureMode.Element);
            }
        }

        &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnMouseUp(MouseButtonEventArgs e)
        {
            &lt;span style="color: blue;"&gt;base&lt;/span&gt;.OnMouseUp(e);

            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (IsMouseCaptured)
            {
                Mouse.Capture(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, CaptureMode.None);
            }
        }

        &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnMouseWheel(MouseWheelEventArgs e)
        {
            &lt;span style="color: blue;"&gt;base&lt;/span&gt;.OnMouseWheel(e);
            &lt;span style="color: blue;"&gt;double&lt;/span&gt; zoomValue;
            &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;double&lt;/span&gt; zoomFactor = 1.1;
            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (e.Delta &amp;lt; 0)
            {
                zoomValue = zoomFactor;
            }
            &lt;span style="color: blue;"&gt;else&lt;/span&gt;
            {
                zoomValue = 1 / zoomFactor;
            }
           
            &lt;span style="color: blue;"&gt;var&lt;/span&gt; scaleTransform3D = &lt;span style="color: blue;"&gt;new&lt;/span&gt; ScaleTransform3D(&lt;span style="color: blue;"&gt;new&lt;/span&gt; Vector3D(zoomValue, zoomValue, zoomValue), ScreenToWorld(e.GetPosition(&lt;span style="color: blue;"&gt;this&lt;/span&gt;)));
            UpdateCameraTransform(scaleTransform3D);

        }

        &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnMouseMove(MouseEventArgs e)
        {
            &lt;span style="color: blue;"&gt;base&lt;/span&gt;.OnMouseMove(e);

            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (IsMouseCaptured)
            {
                Point currentPosition = e.GetPosition(&lt;span style="color: blue;"&gt;this&lt;/span&gt;);

                &lt;span style="color: green;"&gt;// avoid any zero axis conditions&lt;/span&gt;
                &lt;span style="color: blue;"&gt;if&lt;/span&gt; (currentPosition == _previousPosition2D) &lt;span style="color: blue;"&gt;return&lt;/span&gt;;

                &lt;span style="color: green;"&gt;// Prefer tracking to zooming if both buttons are pressed.&lt;/span&gt;
                &lt;span style="color: blue;"&gt;if&lt;/span&gt; (e.LeftButton == MouseButtonState.Pressed)
                {
                    TranslateTransform3D translateTransform3D = Pan(currentPosition);
                    UpdateCameraTransform(translateTransform3D);
                }
                &lt;span style="color: blue;"&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (e.RightButton == MouseButtonState.Pressed)
                {
                    RotateTransform3D rotateTransform3D = Track(currentPosition);
                    UpdateCameraTransform(rotateTransform3D);
                }

                _previousPosition2D = currentPosition;
                _previousPosition3D = ProjectToTrackball(ActualWidth, ActualHeight, currentPosition);
            }
        }

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; UpdateCameraTransform(Transform3D transform3D)
        {
            Viewport3D viewport3D = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Viewport3D;
            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (viewport3D != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
            {
                &lt;span style="color: blue;"&gt;if&lt;/span&gt; (viewport3D.Camera != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
                {
                    &lt;span style="color: blue;"&gt;if&lt;/span&gt; (viewport3D.Camera.IsFrozen)
                    {
                        viewport3D.Camera = viewport3D.Camera.Clone();
                    }
                    &lt;span style="color: blue;"&gt;var&lt;/span&gt; transform3DGroup = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Transform3DGroup();
                    transform3DGroup.Children.Add(viewport3D.Camera.Transform);
                    transform3DGroup.Children.Add(transform3D);
                    viewport3D.Camera.Transform = transform3DGroup;
                }
            }
        }

        &lt;span style="color: blue;"&gt;#endregion&lt;/span&gt; Event Handling

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; TranslateTransform3D Pan(Point currentPosition)
        {
            &lt;span style="color: green;"&gt;//Vector3D currentPosition3D = ProjectToTrackball(ActualWidth, ActualHeight, currentPosition);&lt;/span&gt;
            Vector3D panVector3D = ScreenToWorld(_previousPosition2D) - ScreenToWorld(currentPosition);
            &lt;span style="color: blue;"&gt;var&lt;/span&gt; translateTransform3D = &lt;span style="color: blue;"&gt;new&lt;/span&gt; TranslateTransform3D(panVector3D);
            &lt;span style="color: blue;"&gt;return&lt;/span&gt; translateTransform3D;
        }

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; RotateTransform3D Track(Point currentPosition)
        {
            Vector3D currentPosition3D = ProjectToTrackball(ActualWidth, ActualHeight, currentPosition);

            Vector3D axis = Vector3D.CrossProduct(_previousPosition3D, currentPosition3D);
            &lt;span style="color: blue;"&gt;double&lt;/span&gt; angle = Vector3D.AngleBetween(_previousPosition3D, currentPosition3D);

            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (axis.Length == 0) 
                &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; RotateTransform3D();
            Quaternion delta = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Quaternion(axis, -angle);
            &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; RotateTransform3D(&lt;span style="color: blue;"&gt;new&lt;/span&gt; QuaternionRotation3D(delta),ScreenToWorld(currentPosition));
        }

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; Camera Camera
        {
            &lt;span style="color: blue;"&gt;get&lt;/span&gt;
            {
                &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: blue;"&gt;this&lt;/span&gt;.Viewport3D == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
                    &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;null&lt;/span&gt;;
                &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Viewport3D.Camera;
            }
        }

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; Point3D ScreenToWorld(Point point)
        {
            &lt;span style="color: blue;"&gt;bool&lt;/span&gt; success = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;
            Matrix3D worldToViewportTransform = MathUtils.TryWorldToViewportTransform((Viewport3DVisual) VisualTreeHelper.GetParent(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.Viewport3D.Children[0]), &lt;span style="color: blue;"&gt;out&lt;/span&gt; success);
            &lt;span style="color: blue;"&gt;if&lt;/span&gt;(success &amp;amp;&amp;amp; worldToViewportTransform.HasInverse)
            {
                &lt;span style="color: blue;"&gt;var&lt;/span&gt; point3D = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Point3D(point.X, point.Y, 0);
                worldToViewportTransform.Invert();
                Point3D transformed = worldToViewportTransform.Transform(point3D);
                &lt;span style="color: blue;"&gt;return&lt;/span&gt; transformed;
            }
            &lt;span style="color: blue;"&gt;else&lt;/span&gt;
            {
                &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; Point3D(0,0,0);
            }
        }

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; Vector3D ProjectToTrackball(&lt;span style="color: blue;"&gt;double&lt;/span&gt; width, &lt;span style="color: blue;"&gt;double&lt;/span&gt; height, Point point)
        {
            &lt;span style="color: blue;"&gt;if&lt;/span&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.Camera==&lt;span style="color: blue;"&gt;null&lt;/span&gt;)
                &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; Vector3D(0,0,0);
            &lt;span style="color: blue;"&gt;double&lt;/span&gt; x = point.X / (width / 2);    &lt;span style="color: green;"&gt;// Scale so bounds map to [0,0] - [2,2]&lt;/span&gt;
            &lt;span style="color: blue;"&gt;double&lt;/span&gt; y = point.Y / (height / 2);

            x = x - 1;                           &lt;span style="color: green;"&gt;// Translate 0,0 to the center&lt;/span&gt;
            y = 1 - y;                           &lt;span style="color: green;"&gt;// Flip so +Y is up instead of down&lt;/span&gt;

            &lt;span style="color: blue;"&gt;double&lt;/span&gt; z2 = 1 - x * x - y * y;       &lt;span style="color: green;"&gt;// z^2 = 1 - x^2 - y^2&lt;/span&gt;
            &lt;span style="color: blue;"&gt;double&lt;/span&gt; z = z2 &amp;gt; 0 ? Math.Sqrt(z2) : 0;

            &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; Vector3D(x, y, z);
        }

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; Point _previousPosition2D;
        &lt;span style="color: blue;"&gt;private&lt;/span&gt; Vector3D _previousPosition3D = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Vector3D(0, 0, 1);

        &lt;span style="color: blue;"&gt;private&lt;/span&gt; Border _eventSource;        
    }
}

&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;&lt;/div&gt;</description><author>Johan20D</author><pubDate>Fri, 11 May 2012 05:36:03 GMT</pubDate><guid isPermaLink="false">New Post: WheelZoom 20120511053603A</guid></item><item><title>New Post: WheelZoom</title><link>http://3dtools.codeplex.com/discussions/355203</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;In the TrackBallDecorator class&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;        &lt;span style="color:blue"&gt;protected&lt;/span&gt; &lt;span style="color:blue"&gt;override&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; OnMouseWheel(MouseWheelEventArgs e)
        {
            &lt;span style="color:blue"&gt;double&lt;/span&gt; zoomValue;
            &lt;span style="color:blue"&gt;double&lt;/span&gt; zoomFactor = 1.1;
            &lt;span style="color:blue"&gt;if&lt;/span&gt;(e.Delta&amp;lt;0)
            {
                zoomValue = zoomFactor;
            }
            &lt;span style="color:blue"&gt;else&lt;/span&gt;
            {
                zoomValue = 1/zoomFactor;
            }
            Viewport3D viewport3D = &lt;span style="color:blue"&gt;this&lt;/span&gt;.Viewport3D;
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (viewport3D != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
            {
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (viewport3D.Camera != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
                {
                    &lt;span style="color:blue"&gt;if&lt;/span&gt; (viewport3D.Camera.IsFrozen)
                    {
                        viewport3D.Camera = viewport3D.Camera.Clone();
                    }
                    &lt;span style="color:blue"&gt;var&lt;/span&gt; transform3DGroup = &lt;span style="color:blue"&gt;new&lt;/span&gt; Transform3DGroup();
                    transform3DGroup.Children.Add(viewport3D.Camera.Transform);
                    Vector3D projectToTrackball = ProjectToTrackball(ActualWidth, ActualHeight, e.GetPosition(&lt;span style="color:blue"&gt;this&lt;/span&gt;));
                    transform3DGroup.Children.Add(&lt;span style="color:blue"&gt;new&lt;/span&gt; ScaleTransform3D(&lt;span style="color:blue"&gt;new&lt;/span&gt; Vector3D(zoomValue, zoomValue, zoomValue), &lt;span style="color:blue"&gt;new&lt;/span&gt; Point3D(projectToTrackball.X,projectToTrackball.Y,projectToTrackball.Z)));
                    viewport3D.Camera.Transform = transform3DGroup;
                }
            }

        }
&lt;/pre&gt;
&lt;/div&gt;
I dont know if this is a ggod way
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>Johan20D</author><pubDate>Thu, 10 May 2012 04:33:41 GMT</pubDate><guid isPermaLink="false">New Post: WheelZoom 20120510043341A</guid></item><item><title>New Post: Connot add ScreenSpaceLines3D to Model3DGroup</title><link>http://3dtools.codeplex.com/discussions/274104</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;ScreenSpaceLines3D is Visual3D--&amp;gt;couldn't be added into Model3D like Model3DGroup or GeometryModel3D. However you can add it directly into Viewport3D.&lt;/p&gt;&lt;/div&gt;</description><author>kzoko</author><pubDate>Wed, 29 Feb 2012 16:10:59 GMT</pubDate><guid isPermaLink="false">New Post: Connot add ScreenSpaceLines3D to Model3DGroup 20120229041059P</guid></item><item><title>New Post: Installation</title><link>http://3dtools.codeplex.com/discussions/315463</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;you don't need to install it. Just make a reference to 3DTools.dll in your Project&lt;/p&gt;&lt;/div&gt;</description><author>kzoko</author><pubDate>Wed, 29 Feb 2012 16:08:22 GMT</pubDate><guid isPermaLink="false">New Post: Installation 20120229040822P</guid></item><item><title>New Post: Can ScreenSpaceLines3D work with OrthographicCamera?</title><link>http://3dtools.codeplex.com/discussions/32516</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thanks alot,&amp;nbsp;Joozt&lt;/p&gt;&lt;/div&gt;</description><author>kzoko</author><pubDate>Wed, 29 Feb 2012 16:07:05 GMT</pubDate><guid isPermaLink="false">New Post: Can ScreenSpaceLines3D work with OrthographicCamera? 20120229040705P</guid></item><item><title>New Post: Installation</title><link>http://3dtools.codeplex.com/discussions/315463</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I have downloaded 3DTools and extracted the files. How do In install them?&lt;/p&gt;
&lt;/div&gt;</description><author>nczimm</author><pubDate>Wed, 15 Feb 2012 03:38:42 GMT</pubDate><guid isPermaLink="false">New Post: Installation 20120215033842A</guid></item><item><title>New Post: 3DTools install</title><link>http://3dtools.codeplex.com/discussions/308473</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I have downloaded 3DTools and extracted the files. I don't see an install and&amp;nbsp;3DTools in not available in VS for referencing. What do I need to do?&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description><author>nczimm</author><pubDate>Sun, 12 Feb 2012 06:34:04 GMT</pubDate><guid isPermaLink="false">New Post: 3DTools install 20120212063404A</guid></item><item><title>New Post: Cannot find the scripts folder in Blender 2.60</title><link>http://3dtools.codeplex.com/discussions/284161</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am struggling to find the scripts folder for Blender 2.60. I have Windows 7 installed in my pc. I have to add xaml_export.py in that folder so that I can export the images in xaml format.&lt;/p&gt;
&lt;p&gt;Any suggestions would be appreciated.&lt;/p&gt;
&lt;p&gt;Neha&lt;/p&gt;
&lt;/div&gt;</description><author>nehaagar1986</author><pubDate>Mon, 26 Dec 2011 12:55:57 GMT</pubDate><guid isPermaLink="false">New Post: Cannot find the scripts folder in Blender 2.60 20111226125557P</guid></item><item><title>New Post: Plane to move object and keep tracking objects position</title><link>http://3dtools.codeplex.com/discussions/281286</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;My tetrahedron, centered in the (0,0,0) rotates using a Trackball (programmatically, I have a transparent border over my viewport to capture the events).&lt;/p&gt;
&lt;p&gt;The users for the application think the more naturally way to move the cube inside it is to move it always in a 2D plane (parallel to the screen). So, if I want to move it deeper in the screen, I just rotate the tetrahedron and move it in Y axis, for example.
 I think this can be a good solution.&lt;/p&gt;
&lt;p&gt;I have to problems, and I would like help to solve then: first, when I move my tetrahedron (inside the Trackball) the Trackball looks like moving all the system coordinates. I say this because I draw axis for debug purpose, and those axis are being rotate
 also. But this is not true - they are moving just because are objects inside the trackball (right?). So my questions is&amp;nbsp;&lt;strong&gt;how to define a plane which will not be rotate by trackball?&lt;/strong&gt;&amp;nbsp;For me the answer looks something like &amp;quot;ok, just
 define it outside the track ball&amp;quot; but, as I said (and 3DTools documentation say) I have a border over my viewport... So I do not know how to handle this.&lt;/p&gt;
&lt;p&gt;My tetraedron in a set of ScreenSpaceLines3D. I will have to keep the cube inside it. My second question is&lt;strong&gt;how to I trace the positions of the vertex of the tetrahedron of it being rotated&lt;/strong&gt;? I got really disappointed when the Position property
 gave me the original positions and nothing else. Should I keep the matrix transformations and apply then to my points when I need then?&lt;/p&gt;
&lt;p&gt;Sorry for long text, but I really stuck in this not so much programming questions. I am knew in WPF, I still have some lacks of concepts.&lt;/p&gt;
&lt;p&gt;Thanks in advance,&lt;/p&gt;
&lt;p&gt;Pedro&lt;/p&gt;
&lt;/div&gt;</description><author>pmdusso</author><pubDate>Wed, 30 Nov 2011 08:58:59 GMT</pubDate><guid isPermaLink="false">New Post: Plane to move object and keep tracking objects position 20111130085859A</guid></item><item><title>New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly</title><link>http://3dtools.codeplex.com/discussions/254106</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;http://www.codeplex.com/Download?ProjectName=3dtools&amp;amp;DownloadId=17968&lt;/p&gt;&lt;/div&gt;</description><author>shupacanucks</author><pubDate>Wed, 12 Oct 2011 12:50:05 GMT</pubDate><guid isPermaLink="false">New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly 20111012125005P</guid></item><item><title>New Post: ScreenSpaceLines3D.OnRender bug?</title><link>http://3dtools.codeplex.com/discussions/13889</link><description>&lt;div style="line-height: normal;"&gt;&lt;blockquote style="border: solid .1em #ccc; font-style: italic; margin: .25em 1em 0 1em; padding: 0 .25em 0 .25em;"&gt;&lt;strong&gt;kbeal2k wrote:&lt;/strong&gt;&lt;br /&gt;
&lt;p&gt;Thanks for the info.&amp;nbsp; I have tried both patches and still get a memory leak when using&amp;nbsp;ScreenSpaceLines3D.&lt;span style="font-size: 13px; color: #2b91af;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;&lt;/blockquote&gt;
&lt;p&gt;Me too. Reading this &lt;a href="http://social.msdn.microsoft.com/forums/en-US/wpf/thread/4deedf09-c196-49b8-b8eb-908dd4dadb0e" target="_blank"&gt;post&lt;/a&gt;&amp;nbsp;looks like we have to explicit call the Dispose - I just still do not know where we should call this Dispose.&lt;/p&gt;&lt;/div&gt;</description><author>pmdusso</author><pubDate>Wed, 05 Oct 2011 13:40:17 GMT</pubDate><guid isPermaLink="false">New Post: ScreenSpaceLines3D.OnRender bug? 20111005014017P</guid></item><item><title>New Post: Connot add ScreenSpaceLines3D to Model3DGroup</title><link>http://3dtools.codeplex.com/discussions/274104</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I would like to know if it is possible to add my ScreenSpaceLines3D objects to my Model3DGroup, like the GeometryModel3D objects. Apparently, it is not possible to cast ScreenSpaceLines3D.&lt;/p&gt;
&lt;/div&gt;</description><author>pmdusso</author><pubDate>Wed, 28 Sep 2011 12:32:55 GMT</pubDate><guid isPermaLink="false">New Post: Connot add ScreenSpaceLines3D to Model3DGroup 20110928123255P</guid></item><item><title>New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly</title><link>http://3dtools.codeplex.com/discussions/254106</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;The sources are out there.&amp;nbsp; I forget where - I assume wherever you downloaded the dll - codeplex? -&amp;nbsp;and like I said, I even forget the project I was working on when I posted this so I can't go back and find the dll (plus, I don't think I made it into a separate dll - just threw the sources in my project).&amp;nbsp; Find the sources, alter them and you're good to go.&lt;/p&gt;&lt;/div&gt;</description><author>darrellp</author><pubDate>Sun, 25 Sep 2011 15:49:00 GMT</pubDate><guid isPermaLink="false">New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly 20110925034900P</guid></item><item><title>New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly</title><link>http://3dtools.codeplex.com/discussions/254106</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi again and thank you very much for the quick answer! The problem is that I can't open the project 3DTools to modify it. I am working with VB .NET express edition and I am just adding reference to 3DTools.dll. Do you know which platform I should use to modify the code and recompile it? It would be actually easier for everyone if someone would post a recompiled version of the dll with this problem fixed. If you do that many people would be very happy...&lt;br /&gt;Meanwhile I have found a very ugly solution that at leat works. I'm just adding a set of ScreenSpaceLines3D to my viewport with a number of objects that remains invariable (so that i dont have to delete any of them). If I don't one to display one of them I clear the list of points.&lt;/p&gt;&lt;/div&gt;</description><author>Guille29</author><pubDate>Sun, 25 Sep 2011 08:41:17 GMT</pubDate><guid isPermaLink="false">New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly 20110925084117A</guid></item><item><title>New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly</title><link>http://3dtools.codeplex.com/discussions/254106</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;It's been too long - don't even remember what code I was working on at the time.&amp;nbsp; I do remember that it was pretty easy and I described it pretty well in the above article.&amp;nbsp; Just look for a hook to CompositionTarget.Rendering in the code.&amp;nbsp; Take the ScreenSpaceLines3D class, subclass it from IDisposable, and in the Dispose routine unhook from CompositionTarget.Rendering.&amp;nbsp; Five minute fix.&amp;nbsp; Looks like the developers have abandoned this code or surely they would have taken the five minutes to fix something so many people have complained about.&lt;/p&gt;&lt;/div&gt;</description><author>darrellp</author><pubDate>Sat, 24 Sep 2011 05:45:25 GMT</pubDate><guid isPermaLink="false">New Post: ScreenSpaceLines3D should implement IDispose so the objects can be deleted properly 20110924054525A</guid></item></channel></rss>