├── .gitattributes ├── .gitignore ├── Ab3d.PowerToys WPF net48 Samples.sln ├── Ab3d.PowerToys WPF net60 Samples.sln ├── Ab3d.PowerToys WPF net80 Samples.sln ├── Ab3d.PowerToys WPF net90 Samples.sln ├── Ab3d.PowerToys.Samples ├── Ab3d.PowerToys.Samples.net48.csproj ├── Ab3d.PowerToys.Samples.net60.csproj ├── Ab3d.PowerToys.Samples.net80.csproj ├── Ab3d.PowerToys.Samples.net90.csproj ├── Animations │ ├── AnimationEasingSample.xaml │ ├── AnimationEasingSample.xaml.cs │ ├── AnimationIntroPage.xaml │ ├── AnimationIntroPage.xaml.cs │ ├── AnimationSettings.xaml │ ├── AnimationSettings.xaml.cs │ ├── CameraAnimation.xaml │ ├── CameraAnimation.xaml.cs │ ├── CustomAnimationSample.xaml │ ├── CustomAnimationSample.xaml.cs │ ├── EasingFunctions.xaml │ ├── EasingFunctions.xaml.cs │ ├── FreeCameraAnimation.xaml │ ├── FreeCameraAnimation.xaml.cs │ ├── ObjectAnimationSample.xaml │ └── ObjectAnimationSample.xaml.cs ├── App.xaml ├── App.xaml.cs ├── Assimp │ ├── AssimpAnimationController.cs │ ├── AssimpLoader.cs │ ├── AssimpNodeAnimationNode.cs │ ├── Skeleton.cs │ └── SkeletonNode.cs ├── AssimpLicense.txt ├── AssimpSamples │ ├── AssimpIntroPage.xaml │ ├── AssimpIntroPage.xaml.cs │ ├── AssimpModelVisual3D.xaml │ ├── AssimpModelVisual3D.xaml.cs │ ├── AssimpWpfExporterSample.xaml │ ├── AssimpWpfExporterSample.xaml.cs │ ├── AssimpWpfImporterSample.xaml │ ├── AssimpWpfImporterSample.xaml.cs │ ├── SkeletalAnimation.xaml │ └── SkeletalAnimation.xaml.cs ├── Cameras │ ├── CameraAnimationSample.xaml │ ├── CameraAnimationSample.xaml.cs │ ├── CameraMethods.xaml │ ├── CameraMethods.xaml.cs │ ├── CameraOrientation.xaml │ ├── CameraOrientation.xaml.cs │ ├── CameraTypeSample.xaml │ ├── CameraTypeSample.xaml.cs │ ├── CameraTypesSample.xaml │ ├── CameraTypesSample.xaml.cs │ ├── CamerasIntroPage.xaml │ ├── CamerasIntroPage.xaml.cs │ ├── CamerasPropertiesSample.xaml │ ├── CamerasPropertiesSample.xaml.cs │ ├── CustomUpAxisWithFreeCamera.xaml │ ├── CustomUpAxisWithFreeCamera.xaml.cs │ ├── CustomUpAxisWithGlobalTransform.xaml │ ├── CustomUpAxisWithGlobalTransform.xaml.cs │ ├── FirstPersonCameraSample.xaml │ ├── FirstPersonCameraSample.xaml.cs │ ├── FitIntoViewSample.xaml │ ├── FitIntoViewSample.xaml.cs │ ├── FreeCameraSample.xaml │ ├── FreeCameraSample.xaml.cs │ ├── LimitedCameraMovementSample.xaml │ ├── LimitedCameraMovementSample.xaml.cs │ ├── MouseRay3DSample.xaml │ ├── MouseRay3DSample.xaml.cs │ ├── OffCenterCameraSample.xaml │ ├── OffCenterCameraSample.xaml.cs │ ├── Point3DTo2DSample.xaml │ └── Point3DTo2DSample.xaml.cs ├── Common │ ├── CsvDataReader.cs │ ├── DragAndDropHelper.cs │ ├── GradientColorLegend.cs │ ├── InfoControl.cs │ ├── SceneLayout.cs │ ├── SceneViewType.cs │ ├── SimpleGrid.cs │ ├── StandardTransform3DEditor.xaml │ ├── StandardTransform3DEditor.xaml.cs │ └── TextBlockEx.cs ├── EventManager3D │ ├── EventManagerClickSample.xaml │ ├── EventManagerClickSample.xaml.cs │ ├── EventManagerDragSample.xaml │ ├── EventManagerDragSample.xaml.cs │ ├── EventManagerIntroPage.xaml │ ├── EventManagerIntroPage.xaml.cs │ ├── EventManagerSample.xaml │ ├── EventManagerSample.xaml.cs │ ├── EventPanels │ │ ├── EventData.cs │ │ ├── Mouse3DEventArgsPanel.xaml │ │ ├── Mouse3DEventArgsPanel.xaml.cs │ │ ├── MouseButton3DEventArgsPanel.xaml │ │ ├── MouseButton3DEventArgsPanel.xaml.cs │ │ ├── MouseDrag3DEventArgsPanel.xaml │ │ ├── MouseDrag3DEventArgsPanel.xaml.cs │ │ ├── MouseWheel3DEventArgsPanel.xaml │ │ ├── MouseWheel3DEventArgsPanel.xaml.cs │ │ ├── Touch3DEventArgsPanel.xaml │ │ └── Touch3DEventArgsPanel.xaml.cs │ ├── MouseSelectionAndRotation.xaml │ ├── MouseSelectionAndRotation.xaml.cs │ ├── StandardWpfHitTestingDemo.xaml │ ├── StandardWpfHitTestingDemo.xaml.cs │ ├── TouchManipulationsSample.xaml │ └── TouchManipulationsSample.xaml.cs ├── Graph3D │ ├── AxesBoxVisual3DSample.xaml │ ├── AxesBoxVisual3DSample.xaml.cs │ ├── AxisWith3DLabelsSample.xaml │ ├── AxisWith3DLabelsSample.xaml.cs │ ├── AxisWithOverlayLabelsSample.xaml │ ├── AxisWithOverlayLabelsSample.xaml.cs │ ├── ContourLinesSample.xaml │ ├── ContourLinesSample.xaml.cs │ ├── Graph3D.xaml │ ├── Graph3D.xaml.cs │ ├── Graph3DIntroPage.xaml │ ├── Graph3DIntroPage.xaml.cs │ ├── Plot3DSample.xaml │ └── Plot3DSample.xaml.cs ├── Input │ ├── InputIntroPage.xaml │ ├── InputIntroPage.xaml.cs │ ├── Mouse3DSample.xaml │ ├── Mouse3DSample.xaml.cs │ ├── XInputCameraController.xaml │ └── XInputCameraController.xaml.cs ├── IsStringEmptyConverter.cs ├── Lines3D │ ├── AxesVisuals.xaml │ ├── AxesVisuals.xaml.cs │ ├── CurvesSample.xaml │ ├── CurvesSample.xaml.cs │ ├── DynamicEdgeLinesSample.xaml │ ├── DynamicEdgeLinesSample.xaml.cs │ ├── LineCapsSample.xaml │ ├── LineCapsSample.xaml.cs │ ├── Lines3DIntroPage.xaml │ ├── Lines3DIntroPage.xaml.cs │ ├── Lines3DSample.xaml │ ├── Lines3DSample.xaml.cs │ ├── Lines3DStressTest.xaml │ ├── Lines3DStressTest.xaml.cs │ ├── LinesSelector.xaml │ ├── LinesSelector.xaml.cs │ ├── MiterLimitSample.xaml │ ├── MiterLimitSample.xaml.cs │ ├── StaticEdgeLinesCreationSample.xaml │ ├── StaticEdgeLinesCreationSample.xaml.cs │ ├── StaticLineMeshesSample.xaml │ ├── StaticLineMeshesSample.xaml.cs │ ├── TubeLinesSample.xaml │ ├── TubeLinesSample.xaml.cs │ ├── WireGridVisual3DSample.xaml │ ├── WireGridVisual3DSample.xaml.cs │ ├── WireframePolygonLines.xaml │ ├── WireframePolygonLines.xaml.cs │ ├── WireframeSample.xaml │ ├── WireframeSample.xaml.cs │ ├── WireframeTypesSample.xaml │ └── WireframeTypesSample.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── MouseCameraControllerSamples │ ├── CustomMouseEventsSample.xaml │ ├── CustomMouseEventsSample.xaml.cs │ ├── CustomRotation3DMarker.xaml │ ├── CustomRotation3DMarker.xaml.cs │ ├── CustomRotationMarker.xaml │ ├── CustomRotationMarker.xaml.cs │ ├── HorizontalCameraMovement.xaml │ ├── HorizontalCameraMovement.xaml.cs │ ├── MainMouseCameraControllerProperties.xaml │ ├── MainMouseCameraControllerProperties.xaml.cs │ ├── MouseCameraControllerIntroPage.xaml │ ├── MouseCameraControllerIntroPage.xaml.cs │ ├── MouseCameraControllerOptions.xaml │ ├── MouseCameraControllerOptions.xaml.cs │ ├── QuickZoomSample.xaml │ ├── QuickZoomSample.xaml.cs │ ├── RotateAroundCustomPoint.xaml │ ├── RotateAroundCustomPoint.xaml.cs │ ├── RotationDirectionSample.xaml │ ├── RotationDirectionSample.xaml.cs │ ├── ZoomToCustomPoint.xaml │ └── ZoomToCustomPoint.xaml.cs ├── Objects3D │ ├── AdvancedBooleanOperations.xaml │ ├── AdvancedBooleanOperations.xaml.cs │ ├── AdvancedObjects3DIntroPage.xaml │ ├── AdvancedObjects3DIntroPage.xaml.cs │ ├── AllUIElementsSample.xaml │ ├── AllUIElementsSample.xaml.cs │ ├── AllVisualsSample.xaml │ ├── AllVisualsSample.xaml.cs │ ├── ArrowVisual3DSample.xaml │ ├── ArrowVisual3DSample.xaml.cs │ ├── BooleanOperationsSample.xaml │ ├── BooleanOperationsSample.xaml.cs │ ├── BoxVisual3DSample.xaml │ ├── BoxVisual3DSample.xaml.cs │ ├── CircleVisual3DSample.xaml │ ├── CircleVisual3DSample.xaml.cs │ ├── ConeTubeVisual3DSample.xaml │ ├── ConeTubeVisual3DSample.xaml.cs │ ├── ConeVisual3DSample.xaml │ ├── ConeVisual3DSample.xaml.cs │ ├── CylinderVisual3DSample.xaml │ ├── CylinderVisual3DSample.xaml.cs │ ├── ExtrudeAlongPathSample.xaml │ ├── ExtrudeAlongPathSample.xaml.cs │ ├── ExtrudeAlongPathSettingsSample.xaml │ ├── ExtrudeAlongPathSettingsSample.xaml.cs │ ├── ExtrudeCreator.xaml │ ├── ExtrudeCreator.xaml.cs │ ├── HeightMapSample.xaml │ ├── HeightMapSample.xaml.cs │ ├── HierarchyWithContentVisual3D.xaml │ ├── HierarchyWithContentVisual3D.xaml.cs │ ├── IcosphereVisual3DSample.xaml │ ├── IcosphereVisual3DSample.xaml.cs │ ├── LatheCreator.xaml │ ├── LatheCreator.xaml.cs │ ├── MaterialTypeConverterSample.xaml │ ├── MaterialTypeConverterSample.xaml.cs │ ├── Model3DFactorySample.xaml │ ├── Model3DFactorySample.xaml.cs │ ├── MultiMaterialBoxVisual3DSample.xaml │ ├── MultiMaterialBoxVisual3DSample.xaml.cs │ ├── MultiMaterialBoxesSample.xaml │ ├── MultiMaterialBoxesSample.xaml.cs │ ├── ObjectInspector.xaml │ ├── ObjectInspector.xaml.cs │ ├── Objects3DIntroPage.xaml │ ├── Objects3DIntroPage.xaml.cs │ ├── ObjectsCheatsheet.xaml │ ├── ObjectsCheatsheet.xaml.cs │ ├── PlaneVisual3DSample.xaml │ ├── PlaneVisual3DSample.xaml.cs │ ├── SkyboxSample.xaml │ ├── SkyboxSample.xaml.cs │ ├── SliceSample.xaml │ ├── SliceSample.xaml.cs │ ├── SphereVisual3DSample.xaml │ ├── SphereVisual3DSample.xaml.cs │ ├── SphericalZoneVisual3DSample.xaml │ ├── SphericalZoneVisual3DSample.xaml.cs │ ├── StreamLinesSample.xaml │ ├── StreamLinesSample.xaml.cs │ ├── TorusKnotVisual3DSample.xaml │ ├── TorusKnotVisual3DSample.xaml.cs │ ├── TrapezoidVisual3DSample.xaml │ ├── TrapezoidVisual3DSample.xaml.cs │ ├── TriangulatorWithHolesSample.xaml │ ├── TriangulatorWithHolesSample.xaml.cs │ ├── TubeLineVisual3DSample.xaml │ ├── TubeLineVisual3DSample.xaml.cs │ ├── TubePathSample.xaml │ ├── TubePathSample.xaml.cs │ ├── TubeVisual3DSample.xaml │ ├── TubeVisual3DSample.xaml.cs │ ├── UIElementsToolTipSample.xaml │ └── UIElementsToolTipSample.xaml.cs ├── Other │ ├── BasicWpf3dObjectsTutorial.xaml │ ├── BasicWpf3dObjectsTutorial.xaml.cs │ ├── DXEngineSamples.xaml │ ├── DXEngineSamples.xaml.cs │ ├── IntroductionPage.xaml │ ├── IntroductionPage.xaml.cs │ ├── SupportPage.xaml │ ├── SupportPage.xaml.cs │ ├── WinFormsInfo.xaml │ └── WinFormsInfo.xaml.cs ├── OtherCameraControllers │ ├── CameraControlPanel.xaml │ ├── CameraControlPanel.xaml.cs │ ├── CameraControllerIntroPage.xaml │ ├── CameraControllerIntroPage.xaml.cs │ ├── CameraNavigationCirclesSample.xaml │ ├── CameraNavigationCirclesSample.xaml.cs │ ├── CameraPanelsSample.xaml │ ├── CameraPanelsSample.xaml.cs │ ├── CustomControlPanel.cs │ ├── CustomControlPanelSample.xaml │ ├── CustomControlPanelSample.xaml.cs │ ├── MouseCameraControllerInfo.xaml │ ├── MouseCameraControllerInfo.xaml.cs │ ├── VerticalCameraControlPanelSample.xaml │ └── VerticalCameraControlPanelSample.xaml.cs ├── PowerToys.ico ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── ReaderObj │ ├── ObjModelVisual3D.xaml │ ├── ObjModelVisual3D.xaml.cs │ ├── ReadObjFromResources.xaml │ ├── ReadObjFromResources.xaml.cs │ ├── ReaderObjIntroPage.xaml │ ├── ReaderObjIntroPage.xaml.cs │ ├── ViewerObj.xaml │ └── ViewerObj.xaml.cs ├── Resources │ ├── 10x10-texture.png │ ├── 3D-mouses-from-3Dconnexion.jpg │ ├── AssimpViewerSample.png │ ├── CamerasClassDiagram.png │ ├── Collada │ │ ├── duck.dae │ │ └── duckCM.png │ ├── CustomControlPanel │ │ ├── moveBack.png │ │ ├── moveBack_selected.png │ │ ├── moveDown.png │ │ ├── moveDown_selected.png │ │ ├── moveForward.png │ │ ├── moveForward_selected.png │ │ ├── moveLeft.png │ │ ├── moveLeft_selected.png │ │ ├── moveRight.png │ │ ├── moveRight_selected.png │ │ ├── moveUp.png │ │ ├── moveUp_selected.png │ │ ├── rotateDown.png │ │ ├── rotateDown_selected.png │ │ ├── rotateLeft.png │ │ ├── rotateLeft_selected.png │ │ ├── rotateRight.png │ │ ├── rotateRight_selected.png │ │ ├── rotateUp.png │ │ └── rotateUp_selected.png │ ├── DXEngine-ArrowsSample.png │ ├── HeightMaps │ │ ├── europe.png │ │ ├── europe_height.png │ │ ├── readme.txt │ │ ├── simpleHeightMap.png │ │ ├── srtm_ramp2.world.500x250.png │ │ └── world.topo.200407.3x500x250.png │ ├── KinectSample.jpg │ ├── ModelsDictionary.xaml │ ├── ObjFiles │ │ ├── Teapot.obj │ │ ├── WaltHead.mtl │ │ ├── WaltHead.obj │ │ ├── dragon_vrip_res3.obj │ │ ├── dragon_vrip_res3.obj.mtl │ │ ├── dragon_vrip_res3_readme.txt │ │ ├── house with trees.mtl │ │ ├── house with trees.obj │ │ ├── robotarm.mtl │ │ ├── robotarm.obj │ │ ├── robotarm.png │ │ ├── ship_boat.mtl │ │ ├── ship_boat.obj │ │ ├── ship_boat_readme.txt │ │ └── teapot-hires.obj │ ├── PowerToysTexture.png │ ├── PowerToysWinFormsSample.jpg │ ├── PowerToys_Model3ds.jpg │ ├── PowerToys_box_front.jpg │ ├── PowerToys_box_side.jpg │ ├── Settings.png │ ├── SkyboxTextures │ │ ├── CloudyLightRaysBack512.png │ │ ├── CloudyLightRaysDown512.png │ │ ├── CloudyLightRaysFront512.png │ │ ├── CloudyLightRaysLeft512.png │ │ ├── CloudyLightRaysRight512.png │ │ ├── CloudyLightRaysUp512.png │ │ └── readme.txt │ ├── TransparencyUseCaseModels │ │ ├── OAKPLY1.JPG │ │ ├── coffee.jpg │ │ ├── coffee_logo.jpg │ │ └── coffee_plate.jpg │ ├── TreeTexture.png │ ├── XBox-controller.jpg │ ├── ab4d-logo.png │ ├── cannon.jpg │ ├── grass.jpg │ ├── landscapeTexture.jpg │ ├── new_icon.png │ ├── robotarm-upper-part.3DS │ ├── robotarm.3DS │ ├── soldier.X │ ├── soldier.png │ ├── streamlines.csv │ ├── updated_icon.png │ └── wpf3d │ │ ├── duck.wpf3d │ │ ├── duckCM.png │ │ ├── house with trees.wpf3d │ │ ├── robotarm.wpf3d │ │ └── teapot-hires.wpf3d ├── Samples.xml ├── SceneEditor │ ├── OverlayCanvas3D.cs │ ├── OverlayViewport3D.cs │ ├── SceneEditor.xaml │ ├── SceneEditor.xaml.cs │ └── SceneEditorContext.cs ├── Text3D │ ├── AdjustingTextDirectionSample.xaml │ ├── AdjustingTextDirectionSample.xaml.cs │ ├── CustomTextBlockVisual3DSample.xaml │ ├── CustomTextBlockVisual3DSample.xaml.cs │ ├── LineWithTextSample.xaml │ ├── LineWithTextSample.xaml.cs │ ├── SymbolCharactersSample.xaml │ ├── SymbolCharactersSample.xaml.cs │ ├── Text3DIntroPage.xaml │ ├── Text3DIntroPage.xaml.cs │ ├── Text3DSample.xaml │ ├── Text3DSample.xaml.cs │ ├── TextBlockVisual3DProperties.xaml │ ├── TextBlockVisual3DProperties.xaml.cs │ ├── TextDirectionsSample.xaml │ └── TextDirectionsSample.xaml.cs ├── UseCases │ ├── ArrowsSample.xaml │ ├── ArrowsSample.xaml.cs │ ├── BillboardsSample.xaml │ ├── BillboardsSample.xaml.cs │ ├── CannonBallSimulation.xaml │ ├── CannonBallSimulation.xaml.cs │ ├── DistanceMeasurement.xaml │ ├── DistanceMeasurement.xaml.cs │ ├── DrawOnTextureSample.xaml │ ├── DrawOnTextureSample.xaml.cs │ ├── DucksLakeDemo.xaml │ ├── DucksLakeDemo.xaml.cs │ ├── DucksLakeMouseMoveDemo.xaml │ ├── DucksLakeMouseMoveDemo.xaml.cs │ ├── EarthView.xaml │ ├── EarthView.xaml.cs │ ├── HeatmapRenderingSample.xaml │ ├── HeatmapRenderingSample.xaml.cs │ ├── Interactive3DControlsSample.xaml │ ├── Interactive3DControlsSample.xaml.cs │ ├── InteractiveUserControl.xaml │ ├── InteractiveUserControl.xaml.cs │ ├── ModelingWithBooleanOperations.xaml │ ├── ModelingWithBooleanOperations.xaml.cs │ ├── MultipleSceneViewSample.xaml │ ├── MultipleSceneViewSample.xaml.cs │ ├── ObjectSelectionSample.xaml │ ├── ObjectSelectionSample.xaml.cs │ ├── SceneView3D.xaml │ ├── SceneView3D.xaml.cs │ ├── TemplatePage.xaml │ ├── TemplatePage.xaml.cs │ ├── UseCasesIntroPage.xaml │ ├── UseCasesIntroPage.xaml.cs │ ├── WindGenerator.cs │ ├── WindPowerGeneratorsSample.xaml │ ├── WindPowerGeneratorsSample.xaml.cs │ ├── WireframeSelection.xaml │ └── WireframeSelection.xaml.cs ├── Utilities │ ├── ExtensionMethods.xaml │ ├── ExtensionMethods.xaml.cs │ ├── LightingRigSample.xaml │ ├── LightingRigSample.xaml.cs │ ├── MeshInspectorOverlaySample.xaml │ ├── MeshInspectorOverlaySample.xaml.cs │ ├── Model3DTransparencySortingSample.xaml │ ├── Model3DTransparencySortingSample.xaml.cs │ ├── ModelDecoratorSample.xaml │ ├── ModelDecoratorSample.xaml.cs │ ├── ModelMoverAndRotatorSample.xaml │ ├── ModelMoverAndRotatorSample.xaml.cs │ ├── ModelMoverInsideObjectSample.xaml │ ├── ModelMoverInsideObjectSample.xaml.cs │ ├── ModelMoverOverlaySample.xaml │ ├── ModelMoverOverlaySample.xaml.cs │ ├── ModelMoverOverlayWithZUpAxisSample.xaml │ ├── ModelMoverOverlayWithZUpAxisSample.xaml.cs │ ├── ModelOptimizerTest.xaml │ ├── ModelOptimizerTest.xaml.cs │ ├── ModelRotatorSample.xaml │ ├── ModelRotatorSample.xaml.cs │ ├── ModelRotatorWithStandardTransformSample.xaml │ ├── ModelRotatorWithStandardTransformSample.xaml.cs │ ├── ModelScalarSample.xaml │ ├── ModelScalarSample.xaml.cs │ ├── OtherUtilitiesInfo.xaml │ ├── OtherUtilitiesInfo.xaml.cs │ ├── PerspectiveTransformationSample.xaml │ ├── PerspectiveTransformationSample.xaml.cs │ ├── PlanarShadows.xaml │ ├── PlanarShadows.xaml.cs │ ├── PositionAndScaleModel3DSample.xaml │ ├── PositionAndScaleModel3DSample.xaml.cs │ ├── RenderToBitmapSample.xaml │ ├── RenderToBitmapSample.xaml.cs │ ├── SceneWithGlassesSample.xaml │ ├── SceneWithGlassesSample.xaml.cs │ ├── ShadingHelperSample.xaml │ ├── ShadingHelperSample.xaml.cs │ ├── StandardTransformSample.xaml │ ├── StandardTransformSample.xaml.cs │ ├── TextureCoordinatesGeneratorSample.xaml │ ├── TextureCoordinatesGeneratorSample.xaml.cs │ ├── TransparencyProblem.xaml │ ├── TransparencyProblem.xaml.cs │ ├── UtilitiesIntroPage.xaml │ ├── UtilitiesIntroPage.xaml.cs │ ├── Visual3DTransparencySortingSample.xaml │ └── Visual3DTransparencySortingSample.xaml.cs ├── Wpf3DFile │ ├── ImportWpf3DFileWindow.xaml │ ├── ImportWpf3DFileWindow.xaml.cs │ ├── Wpf3DFile.cs │ ├── Wpf3DFileExportUserControl.xaml │ ├── Wpf3DFileExportUserControl.xaml.cs │ ├── Wpf3DFileExporterSample.xaml │ ├── Wpf3DFileExporterSample.xaml.cs │ ├── Wpf3DFileImporterSample.xaml │ ├── Wpf3DFileImporterSample.xaml.cs │ ├── Wpf3DFileInfoControl.xaml │ ├── Wpf3DFileInfoControl.xaml.cs │ ├── Wpf3DFileIntroPage.xaml │ └── Wpf3DFileIntroPage.xaml.cs ├── app.config └── packages.config ├── README.md └── lib ├── Ab3d.PowerToys.Assimp license.txt ├── Ab3d.PowerToys.Assimp.XML ├── Ab3d.PowerToys.Assimp.dll ├── Assimp32.dll ├── Assimp64.dll ├── AssimpLicense.txt ├── AssimpNet.dll ├── AssimpNet.xml ├── net60 ├── Ab3d.PowerToys.Assimp.XML ├── Ab3d.PowerToys.Assimp.deps.json ├── Ab3d.PowerToys.Assimp.dll ├── AssimpNet.XML ├── AssimpNet.deps.json └── AssimpNet.dll └── version readme.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /Ab3d.PowerToys WPF net48 Samples.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29209.152 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ab3d.PowerToys.Samples", "Ab3d.PowerToys.Samples\Ab3d.PowerToys.Samples.net48.csproj", "{3A03EEA1-567C-4E18-9A3E-5951EFF558D4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|Mixed Platforms = Debug|Mixed Platforms 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|Mixed Platforms = Release|Mixed Platforms 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 21 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 22 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|x86.ActiveCfg = Debug|Any CPU 23 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.Build.0 = Release|Any CPU 25 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 26 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.Build.0 = Release|Any CPU 27 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|x86.ActiveCfg = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /Ab3d.PowerToys WPF net60 Samples.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.0.29411.108 5 | MinimumVisualStudioVersion = 17.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ab3d.PowerToys.Samples", "Ab3d.PowerToys.Samples\Ab3d.PowerToys.Samples.net60.csproj", "{3A03EEA1-567C-4E18-9A3E-5951EFF558D4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|Mixed Platforms = Debug|Mixed Platforms 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|Mixed Platforms = Release|Mixed Platforms 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 21 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 22 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|x86.ActiveCfg = Debug|Any CPU 23 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.Build.0 = Release|Any CPU 25 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 26 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.Build.0 = Release|Any CPU 27 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|x86.ActiveCfg = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /Ab3d.PowerToys WPF net80 Samples.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.0.29411.108 5 | MinimumVisualStudioVersion = 17.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ab3d.PowerToys.Samples", "Ab3d.PowerToys.Samples\Ab3d.PowerToys.Samples.net80.csproj", "{3A03EEA1-567C-4E18-9A3E-5951EFF558D4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|Mixed Platforms = Debug|Mixed Platforms 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|Mixed Platforms = Release|Mixed Platforms 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 21 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 22 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|x86.ActiveCfg = Debug|Any CPU 23 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.Build.0 = Release|Any CPU 25 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 26 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.Build.0 = Release|Any CPU 27 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|x86.ActiveCfg = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /Ab3d.PowerToys WPF net90 Samples.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.0.29411.108 5 | MinimumVisualStudioVersion = 17.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ab3d.PowerToys.Samples", "Ab3d.PowerToys.Samples\Ab3d.PowerToys.Samples.net90.csproj", "{3A03EEA1-567C-4E18-9A3E-5951EFF558D4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|Mixed Platforms = Debug|Mixed Platforms 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|Mixed Platforms = Release|Mixed Platforms 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 21 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 22 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Debug|x86.ActiveCfg = Debug|Any CPU 23 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Any CPU.Build.0 = Release|Any CPU 25 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 26 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|Mixed Platforms.Build.0 = Release|Any CPU 27 | {3A03EEA1-567C-4E18-9A3E-5951EFF558D4}.Release|x86.ActiveCfg = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Animations/AnimationIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | Animations 15 | 16 | 17 | Ab3d.PowerToys library support advanced camera and objects animation with using key frames and custom easing functions.\n 18 | \n 19 | The samples in this section shows some possible animation scenarios and show how to customize the animation.\n 20 | \n 21 | To get more information check the comments in the code behind. 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Animations/AnimationIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Animation 6 | { 7 | public partial class AnimationIntroPage : Page 8 | { 9 | public AnimationIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Animations/EasingFunctions.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Windows; 7 | 8 | namespace Ab3d.PowerToys.Samples 9 | { 10 | /// 11 | /// Interaction logic for App.xaml 12 | /// 13 | public partial class App : Application 14 | { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/AssimpSamples/AssimpIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Assimp; 15 | 16 | namespace Ab3d.PowerToys.Samples.AssimpSamples 17 | { 18 | /// 19 | /// Interaction logic for AssimpIntroPage.xaml 20 | /// 21 | public partial class AssimpIntroPage : Page 22 | { 23 | public AssimpIntroPage() 24 | { 25 | InitializeComponent(); 26 | 27 | // We create an instance of AssimpWpfImporter to read all supported file formats 28 | // and set that to the FileFormatsTextBlock 29 | 30 | // Use helper class (defined in this sample project) to load the native assimp libraries 31 | // IMPORTANT: See commend in the AssimpLoader class for details on how to prepare your project to use assimp library. 32 | AssimpLoader.LoadAssimpNativeLibrary(); 33 | 34 | var assimpWpfImporter = new AssimpWpfImporter(); 35 | 36 | string[] supportedImportFormats = assimpWpfImporter.SupportedImportFormats; 37 | FileFormatsTextBlock.Text = string.Join(", ", supportedImportFormats); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/AssimpSamples/AssimpModelVisual3D.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Assimp; 15 | 16 | namespace Ab3d.PowerToys.Samples.AssimpSamples 17 | { 18 | /// 19 | /// Interaction logic for AssimpModelVisual3D.xaml 20 | /// 21 | public partial class AssimpModelVisual3D : Page 22 | { 23 | public AssimpModelVisual3D() 24 | { 25 | // Use helper class (defined in this sample project) to load the native assimp libraries 26 | // IMPORTANT: See commend in the AssimpLoader class for details on how to prepare your project to use assimp library. 27 | AssimpLoader.LoadAssimpNativeLibrary(); 28 | 29 | // It is recommended to set the TriangulatorFunc static property to provide direct access to Triangulator from Ab3d.PowerToys. 30 | // If this is not done, then Reflection is used to get the same Triangulator object. 31 | AssimpWpfConverter.TriangulatorFunc = positions => 32 | { 33 | var triangulator3D = new Ab3d.Utilities.Triangulator(positions); 34 | return triangulator3D.CreateTriangleIndices(); 35 | }; 36 | 37 | InitializeComponent(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Cameras/CameraOrientation.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Cameras 16 | { 17 | /// 18 | /// Interaction logic for CameraOrientation.xaml 19 | /// 20 | public partial class CameraOrientation : Page 21 | { 22 | public CameraOrientation() 23 | { 24 | InitializeComponent(); 25 | } 26 | 27 | private void BankSlider_OnValueChanged(object sender, RoutedEventArgs e) 28 | { 29 | if (!this.IsLoaded) 30 | return; 31 | 32 | // Because we need to negate the angle we cannot directly bind EndAngle to slider's value 33 | BankLineArc.EndAngle = -BankSlider.Value; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Cameras/CameraTypeSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using System.Windows.Media.Media3D; 15 | 16 | namespace Ab3d.PowerToys.Samples.Cameras 17 | { 18 | /// 19 | /// Interaction logic for CameraTypeSample.xaml 20 | /// 21 | public partial class CameraTypeSample : Page 22 | { 23 | public CameraTypeSample() 24 | { 25 | InitializeComponent(); 26 | } 27 | 28 | private void OnCameraTypeChanged(object sender, RoutedEventArgs e) 29 | { 30 | if (!this.IsLoaded) 31 | return; 32 | 33 | if (PerspectiveCameraRadioButton.IsChecked ?? false) 34 | { 35 | if (Camera1.CameraType != Ab3d.Cameras.BaseCamera.CameraTypes.PerspectiveCamera) 36 | Camera1.CameraType = Ab3d.Cameras.BaseCamera.CameraTypes.PerspectiveCamera; 37 | } 38 | else if (OrthographicCameraRadioButton.IsChecked ?? false) 39 | { 40 | if (Camera1.CameraType != Ab3d.Cameras.BaseCamera.CameraTypes.OrthographicCamera) 41 | Camera1.CameraType = Ab3d.Cameras.BaseCamera.CameraTypes.OrthographicCamera; 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Cameras/CamerasIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Cameras 6 | { 7 | public partial class CamerasIntroPage : Page 8 | { 9 | public CamerasIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Cameras/CustomUpAxisWithFreeCamera.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Media.Media3D; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | using Ab3d.Controls; 16 | using Ab3d.Visuals; 17 | 18 | namespace Ab3d.PowerToys.Samples.Cameras 19 | { 20 | /// 21 | /// Interaction logic for CustomUpAxisWithFreeCamera.xaml 22 | /// 23 | public partial class CustomUpAxisWithFreeCamera : Page 24 | { 25 | public CustomUpAxisWithFreeCamera() 26 | { 27 | InitializeComponent(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Cameras/CustomUpAxisWithGlobalTransform.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Media.Media3D; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | using Ab3d.Visuals; 16 | 17 | namespace Ab3d.PowerToys.Samples.Cameras 18 | { 19 | /// 20 | /// Interaction logic for CustomUpAxisWithGlobalTransform.xaml 21 | /// 22 | public partial class CustomUpAxisWithGlobalTransform : Page 23 | { 24 | public CustomUpAxisWithGlobalTransform() 25 | { 26 | InitializeComponent(); 27 | 28 | // See XAML for more comments 29 | 30 | // Set the axes so they show left handed coordinate system such Autocad (with z up) 31 | // Note: WPF uses right handed coordinate system (such as OpenGL) 32 | // DirectX also uses left handed coordinate system with y up 33 | CustomCameraAxisPanel1.CustomizeAxes(new Vector3D(1, 0, 0), "X", Colors.Red, 34 | new Vector3D(0, 1, 0), "Z", Colors.Blue, 35 | new Vector3D(0, 0, -1), "Y", Colors.Green); 36 | 37 | 38 | NavigationCircles1.UseZUpAxis(); 39 | 40 | // Calling UseZUpAxis is the same as: 41 | // 42 | //cameraNavigationCircles.CustomizeAxes(xAxisVector: new Vector3D(1, 0, 0), yAxisVector: new Vector3D(0, 0, -1), zAxisVector: new Vector3D(0, 1, 0)); 43 | // 44 | // or: 45 | // 46 | //cameraNavigationCircles.CustomizeAxes("X", "-X", Colors.Red, new Vector3D(1, 0, 0), 47 | // "Z", "-Z", Colors.ForestGreen, new Vector3D(0, 1, 0), 48 | // "Y", "-Y", Colors.RoyalBlue, new Vector3D(0, 0, -1)); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Cameras/FreeCameraSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Media.Media3D; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | using Ab3d.Visuals; 16 | 17 | namespace Ab3d.PowerToys.Samples.Cameras 18 | { 19 | /// 20 | /// Interaction logic for FreeCameraSample.xaml 21 | /// 22 | public partial class FreeCameraSample : Page 23 | { 24 | public FreeCameraSample() 25 | { 26 | InitializeComponent(); 27 | 28 | //Camera1.StartRotation(45, 0); 29 | } 30 | 31 | private void ResetCameraButton_OnClick(object sender, RoutedEventArgs e) 32 | { 33 | ResetCamera(); 34 | } 35 | 36 | private void ResetCamera() 37 | { 38 | Camera1.TargetPosition = new Point3D(0, 10, 0); 39 | Camera1.CameraPosition = new Point3D(0, 10, -100); 40 | Camera1.UpDirection = new Vector3D(0, 1, 0); 41 | } 42 | 43 | private void OnRotationUpAxisCheckedChanged(object sender, RoutedEventArgs e) 44 | { 45 | if (!this.IsLoaded) 46 | return; 47 | 48 | 49 | // Start using new RotationUpAxis from the initial camera position 50 | ResetCamera(); 51 | 52 | 53 | Vector3D? newRotationUpAxis; 54 | 55 | if (YAxisRadioButton.IsChecked ?? false) 56 | { 57 | newRotationUpAxis = new Vector3D(0, 1, 0); 58 | } 59 | else if (ZAxisRadioButton.IsChecked ?? false) 60 | { 61 | newRotationUpAxis = new Vector3D(0, 0, 1); 62 | 63 | // If we would like to use tha camera so that Z axis is up axis in the scene, 64 | // then we also need to update the CameraPosition and UpDirection 65 | Camera1.TargetPosition = new Point3D(0, 0, 10); 66 | Camera1.CameraPosition = new Point3D(0, -100, 10); 67 | Camera1.UpDirection = new Vector3D(0, 0, 1); // Set Z as up direction 68 | } 69 | else 70 | { 71 | newRotationUpAxis = null; 72 | } 73 | 74 | Camera1.RotationUpAxis = newRotationUpAxis; 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Common/SceneViewType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | 4 | namespace Ab3d.PowerToys.Samples.Common 5 | { 6 | public class SceneViewType 7 | { 8 | public string Name { get; private set; } 9 | public double Heading { get; private set; } 10 | public double Attitude { get; private set; } 11 | 12 | public SceneViewType(string name, double heading, double attitude) 13 | { 14 | Name = name; 15 | Heading = heading; 16 | Attitude = attitude; 17 | } 18 | 19 | #region static StandardViews, StandardCustomSceneView, Get 20 | 21 | private static SceneViewType[] _standerViews; 22 | 23 | private static SceneViewType _standardCustomSceneView; 24 | 25 | public static SceneViewType[] StandardViews 26 | { 27 | get 28 | { 29 | if (_standerViews == null) 30 | SetupStandardViews(); 31 | 32 | return _standerViews; 33 | } 34 | } 35 | 36 | public static SceneViewType StandardCustomSceneView 37 | { 38 | get 39 | { 40 | if (_standardCustomSceneView == null) 41 | SetupStandardViews(); 42 | 43 | return _standardCustomSceneView; 44 | } 45 | } 46 | 47 | public static SceneViewType Get(string name) 48 | { 49 | if (_standerViews == null) 50 | SetupStandardViews(); 51 | 52 | return _standerViews.FirstOrDefault(v => string.Equals(v.Name, name, StringComparison.CurrentCultureIgnoreCase)); 53 | } 54 | 55 | private static void SetupStandardViews() 56 | { 57 | _standardCustomSceneView = new SceneViewType("Custom", 20, -20); 58 | 59 | _standerViews = new SceneViewType[] 60 | { 61 | _standardCustomSceneView, 62 | new SceneViewType("Top", 0, -90), 63 | new SceneViewType("Front", 0, 0), 64 | new SceneViewType("Left", 90, 0), 65 | new SceneViewType("Right", -90, 0), 66 | new SceneViewType("Back", 180, 0), 67 | new SceneViewType("Bottom", 0, 90) 68 | }; 69 | } 70 | 71 | public override bool Equals(object obj) 72 | { 73 | var sceneViewType = obj as SceneViewType; 74 | if (sceneViewType == null) 75 | return false; 76 | 77 | return this.Name.Equals(sceneViewType.Name) && 78 | this.Heading.Equals(sceneViewType.Heading) && 79 | this.Attitude.Equals(sceneViewType.Attitude); 80 | } 81 | 82 | public override int GetHashCode() 83 | { 84 | return this.Name.GetHashCode() ^ this.Heading.GetHashCode() ^ this.Attitude.GetHashCode(); 85 | } 86 | 87 | #endregion 88 | } 89 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventManagerIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.EventManager3D 6 | { 7 | public partial class EventManagerIntroPage : Page 8 | { 9 | public EventManagerIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/EventData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace Ab3d.PowerToys.Samples.EventManager3D.EventPanels 7 | { 8 | /// 9 | /// Event data for displaying list of all triggered events 10 | /// 11 | public class EventData 12 | { 13 | public string Time { get; private set; } 14 | public string Name { get; private set; } 15 | public EventArgs Args { get; private set; } 16 | 17 | public EventData(string name, EventArgs args) 18 | { 19 | this.Name = name; 20 | this.Args = args; 21 | 22 | this.Time = DateTime.Now.ToString("HH:mm:ss.f"); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/Mouse3DEventArgsPanel.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/Mouse3DEventArgsPanel.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Common.EventManager3D; 15 | using System.Windows.Media.Media3D; 16 | using Ab3d.Utilities; 17 | 18 | namespace Ab3d.PowerToys.Samples.EventManager3D.EventPanels 19 | { 20 | /// 21 | /// Interaction logic for Mouse3DEventArgsPanel.xaml 22 | /// 23 | public partial class Mouse3DEventArgsPanel : UserControl 24 | { 25 | public Mouse3DEventArgsPanel() 26 | { 27 | InitializeComponent(); 28 | 29 | this.DataContextChanged += new DependencyPropertyChangedEventHandler(Mouse3DEventArgsPanel_DataContextChanged); 30 | } 31 | 32 | void Mouse3DEventArgsPanel_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) 33 | { 34 | // Manually check if hit object was MultiModelEventSource3D or MultiVisualEventSource3D 35 | // and in this case show HitModelName / HitVisualName 36 | 37 | HitNameTitleTextBlock.Visibility = Visibility.Collapsed; 38 | HitNameValueTextBlock.Visibility = Visibility.Collapsed; 39 | 40 | if (this.DataContext is BaseMouse3DEventArgs) 41 | { 42 | BaseMouse3DEventArgs mouse3DEventArgs = this.DataContext as BaseMouse3DEventArgs; 43 | 44 | if (mouse3DEventArgs.HitEventSource3D is MultiModelEventSource3D) 45 | { 46 | MultiModelEventSource3D multiModelEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiModelEventSource3D; 47 | 48 | if (!string.IsNullOrEmpty(multiModelEventSource3D.HitModelName)) 49 | { 50 | HitNameValueTextBlock.Text = multiModelEventSource3D.HitModelName; 51 | 52 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 53 | HitNameValueTextBlock.Visibility = Visibility.Visible; 54 | } 55 | } 56 | else if (mouse3DEventArgs.HitEventSource3D is MultiVisualEventSource3D) 57 | { 58 | MultiVisualEventSource3D multiVisualEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiVisualEventSource3D; 59 | 60 | if (!string.IsNullOrEmpty(multiVisualEventSource3D.HitVisualName)) 61 | { 62 | HitNameValueTextBlock.Text = multiVisualEventSource3D.HitVisualName; 63 | 64 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 65 | HitNameValueTextBlock.Visibility = Visibility.Visible; 66 | } 67 | } 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/MouseButton3DEventArgsPanel.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/MouseButton3DEventArgsPanel.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Common.EventManager3D; 15 | using Ab3d.Utilities; 16 | 17 | namespace Ab3d.PowerToys.Samples.EventManager3D.EventPanels 18 | { 19 | /// 20 | /// Interaction logic for MouseButton3DEventArgsPanel.xaml 21 | /// 22 | public partial class MouseButton3DEventArgsPanel : UserControl 23 | { 24 | public MouseButton3DEventArgsPanel() 25 | { 26 | InitializeComponent(); 27 | 28 | this.DataContextChanged += new DependencyPropertyChangedEventHandler(Mouse3DEventArgsPanel_DataContextChanged); 29 | } 30 | 31 | void Mouse3DEventArgsPanel_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) 32 | { 33 | // Manually check if hit object was MultiModelEventSource3D or MultiVisualEventSource3D 34 | // and in this case show HitModelName / HitVisualName 35 | 36 | HitNameTitleTextBlock.Visibility = Visibility.Collapsed; 37 | HitNameValueTextBlock.Visibility = Visibility.Collapsed; 38 | 39 | if (this.DataContext is BaseMouse3DEventArgs) 40 | { 41 | BaseMouse3DEventArgs mouse3DEventArgs = this.DataContext as BaseMouse3DEventArgs; 42 | 43 | if (mouse3DEventArgs.HitEventSource3D is MultiModelEventSource3D) 44 | { 45 | MultiModelEventSource3D multiModelEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiModelEventSource3D; 46 | 47 | if (!string.IsNullOrEmpty(multiModelEventSource3D.HitModelName)) 48 | { 49 | HitNameValueTextBlock.Text = multiModelEventSource3D.HitModelName; 50 | 51 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 52 | HitNameValueTextBlock.Visibility = Visibility.Visible; 53 | } 54 | } 55 | else if (mouse3DEventArgs.HitEventSource3D is MultiVisualEventSource3D) 56 | { 57 | MultiVisualEventSource3D multiVisualEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiVisualEventSource3D; 58 | 59 | if (!string.IsNullOrEmpty(multiVisualEventSource3D.HitVisualName)) 60 | { 61 | HitNameValueTextBlock.Text = multiVisualEventSource3D.HitVisualName; 62 | 63 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 64 | HitNameValueTextBlock.Visibility = Visibility.Visible; 65 | } 66 | } 67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/MouseDrag3DEventArgsPanel.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Common.EventManager3D; 15 | using System.Windows.Media.Media3D; 16 | using Ab3d.Utilities; 17 | 18 | namespace Ab3d.PowerToys.Samples.EventManager3D.EventPanels 19 | { 20 | /// 21 | /// Interaction logic for MouseDrag3DEventArgsPanel.xaml 22 | /// 23 | public partial class MouseDrag3DEventArgsPanel : UserControl 24 | { 25 | public MouseDrag3DEventArgsPanel() 26 | { 27 | InitializeComponent(); 28 | 29 | this.DataContextChanged += new DependencyPropertyChangedEventHandler(Mouse3DEventArgsPanel_DataContextChanged); 30 | } 31 | 32 | 33 | void Mouse3DEventArgsPanel_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) 34 | { 35 | // Manually check if hit object was MultiModelEventSource3D or MultiVisualEventSource3D 36 | // and in this case show HitModelName / HitVisualName 37 | 38 | HitNameTitleTextBlock.Visibility = Visibility.Collapsed; 39 | HitNameValueTextBlock.Visibility = Visibility.Collapsed; 40 | 41 | if (this.DataContext is BaseMouse3DEventArgs) 42 | { 43 | BaseMouse3DEventArgs mouse3DEventArgs = this.DataContext as BaseMouse3DEventArgs; 44 | 45 | if (mouse3DEventArgs.HitEventSource3D is MultiModelEventSource3D) 46 | { 47 | MultiModelEventSource3D multiModelEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiModelEventSource3D; 48 | 49 | if (!string.IsNullOrEmpty(multiModelEventSource3D.HitModelName)) 50 | { 51 | HitNameValueTextBlock.Text = multiModelEventSource3D.HitModelName; 52 | 53 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 54 | HitNameValueTextBlock.Visibility = Visibility.Visible; 55 | } 56 | } 57 | else if (mouse3DEventArgs.HitEventSource3D is MultiVisualEventSource3D) 58 | { 59 | MultiVisualEventSource3D multiVisualEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiVisualEventSource3D; 60 | 61 | if (!string.IsNullOrEmpty(multiVisualEventSource3D.HitVisualName)) 62 | { 63 | HitNameValueTextBlock.Text = multiVisualEventSource3D.HitVisualName; 64 | 65 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 66 | HitNameValueTextBlock.Visibility = Visibility.Visible; 67 | } 68 | } 69 | } 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/MouseWheel3DEventArgsPanel.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/MouseWheel3DEventArgsPanel.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Common.EventManager3D; 15 | using System.Windows.Media.Media3D; 16 | using Ab3d.Utilities; 17 | 18 | namespace Ab3d.PowerToys.Samples.EventManager3D.EventPanels 19 | { 20 | /// 21 | /// Interaction logic for MouseWheel3DEventArgsPanel.xaml 22 | /// 23 | public partial class MouseWheel3DEventArgsPanel : UserControl 24 | { 25 | public MouseWheel3DEventArgsPanel() 26 | { 27 | InitializeComponent(); 28 | 29 | this.DataContextChanged += new DependencyPropertyChangedEventHandler(MouseWheel3DEventArgsPanel_DataContextChanged); 30 | } 31 | 32 | void MouseWheel3DEventArgsPanel_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) 33 | { 34 | // Manually check if hit object was MultiModelEventSource3D or MultiVisualEventSource3D 35 | // and in this case show HitModelName / HitVisualName 36 | 37 | HitNameTitleTextBlock.Visibility = Visibility.Collapsed; 38 | HitNameValueTextBlock.Visibility = Visibility.Collapsed; 39 | 40 | if (this.DataContext is BaseMouse3DEventArgs) 41 | { 42 | BaseMouse3DEventArgs mouse3DEventArgs = this.DataContext as BaseMouse3DEventArgs; 43 | 44 | if (mouse3DEventArgs.HitEventSource3D is MultiModelEventSource3D) 45 | { 46 | MultiModelEventSource3D multiModelEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiModelEventSource3D; 47 | 48 | if (!string.IsNullOrEmpty(multiModelEventSource3D.HitModelName)) 49 | { 50 | HitNameValueTextBlock.Text = multiModelEventSource3D.HitModelName; 51 | 52 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 53 | HitNameValueTextBlock.Visibility = Visibility.Visible; 54 | } 55 | } 56 | else if (mouse3DEventArgs.HitEventSource3D is MultiVisualEventSource3D) 57 | { 58 | MultiVisualEventSource3D multiVisualEventSource3D = mouse3DEventArgs.HitEventSource3D as MultiVisualEventSource3D; 59 | 60 | if (!string.IsNullOrEmpty(multiVisualEventSource3D.HitVisualName)) 61 | { 62 | HitNameValueTextBlock.Text = multiVisualEventSource3D.HitVisualName; 63 | 64 | HitNameTitleTextBlock.Visibility = Visibility.Visible; 65 | HitNameValueTextBlock.Visibility = Visibility.Visible; 66 | } 67 | } 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/EventManager3D/EventPanels/Touch3DEventArgsPanel.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Graph3D/Graph3DIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | \!3D Graphs\! 15 | 16 | This section shows a few sample 3D graphs and the building blocks that you can use to show 3D axes. 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Graph3D/Graph3DIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Graph3D 6 | { 7 | public partial class Graph3DIntroPage : Page 8 | { 9 | public Graph3DIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Input/InputIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | The Input samples section shows how to control the camera with using a \!3D mouse\! from 3D Connection or a \!XBox or similar game controller\!.\n 16 | \n 17 | Using 3D mouse can greatly improve productivity of an experienced user because it can greatly speed up navigation in 3D world. 18 | 19 | 20 | 21 | 22 | 23 | 24 | (images from www.3dconnexion.eu and www.xbox.com)\n 25 | \n 26 | The classes that allow controlling camera with 3D mouse or game controller are defined in a separate \!Ab3d.PowerToys.Input\! assembly. 27 | This means that before you can use them, you need to add reference to Ab3d.PowerToys.Input assembly.\n 28 | \n 29 | \n 30 | Note that when using the 3D mouse API, you need to agree to the 3Dconnexion SDK license (available here: http://www.3dconnexion.eu/service/software-developer/licence-agreement.html). 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Input/InputIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Input 6 | { 7 | public partial class InputIntroPage : Page 8 | { 9 | public InputIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/IsStringEmptyConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Windows; 5 | using System.Windows.Data; 6 | using System.Xml; 7 | 8 | namespace Ab3d.PowerToys.Samples 9 | { 10 | // From: Kevin Moore's Bag-o-Tricks (http://j832.com/bagotricks) 11 | public class IsStringEmptyConverter : IValueConverter 12 | { 13 | public object Convert( 14 | object value, 15 | Type targetType, 16 | object parameter, 17 | CultureInfo culture) 18 | { 19 | var xmlElement = value as XmlElement; 20 | if (xmlElement != null) 21 | { 22 | var descriptionAttribute = xmlElement.Attributes["Description"]; 23 | if (descriptionAttribute != null) 24 | { 25 | if (!string.IsNullOrEmpty(descriptionAttribute.Value)) 26 | { 27 | if (targetType == typeof(Visibility)) 28 | return Visibility.Visible; 29 | 30 | return true; 31 | } 32 | } 33 | } 34 | 35 | if (targetType == typeof(Visibility)) 36 | return Visibility.Collapsed; 37 | 38 | return false; 39 | } 40 | 41 | public object ConvertBack( 42 | object value, 43 | Type targetType, 44 | object parameter, 45 | CultureInfo culture) 46 | { 47 | throw new NotSupportedException(); 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Lines3D/AxesVisuals.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Lines3D 16 | { 17 | /// 18 | /// Interaction logic for AxesVisuals.xaml 19 | /// 20 | public partial class AxesVisuals : Page 21 | { 22 | public AxesVisuals() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Lines3D/Lines3DIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Lines3D 6 | { 7 | public partial class Lines3DIntroPage : Page 8 | { 9 | public Lines3DIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Lines3D/Lines3DSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Utilities; 15 | using Ab3d.Visuals; 16 | using System.Windows.Media.Media3D; 17 | 18 | namespace Ab3d.PowerToys.Samples.Lines3D 19 | { 20 | /// 21 | /// Interaction logic for Lines3DSample.xaml 22 | /// 23 | public partial class Lines3DSample : Page 24 | { 25 | public Lines3DSample() 26 | { 27 | InitializeComponent(); 28 | 29 | SetUpMultiPolyLineVisual3D(); 30 | } 31 | 32 | private void SetUpMultiPolyLineVisual3D() 33 | { 34 | // MultiPolyLineVisual3D.PositionsList need a list of Point3DCollection to draw multiple polylines with one Visual3D 35 | 36 | var allPolylines = new List(); 37 | 38 | // We will create multiple circles with 6 segments 39 | int segmentsCount = 6; 40 | 41 | var circlePositions = new List(); 42 | double angleStep = 2 * Math.PI / segmentsCount; 43 | double angle = 0; 44 | for (int i = 0; i < segmentsCount; i++) 45 | { 46 | circlePositions.Add(new Point(Math.Sin(angle), Math.Cos(angle))); 47 | angle += angleStep; 48 | } 49 | 50 | // Start center position 51 | var centerPosition = new Point3D(-120, 0, -120); 52 | 53 | for (int i = 1; i < 5; i++) 54 | { 55 | var point3DCollection = new Point3DCollection(segmentsCount); 56 | for (int j = 0; j < segmentsCount; j++) 57 | { 58 | var onePosition = centerPosition + new Vector3D(circlePositions[j].X * i * 5 + 10, circlePositions[j].Y * i * 5 + 10, -i * 10); 59 | point3DCollection.Add(onePosition); 60 | } 61 | 62 | allPolylines.Add(point3DCollection); 63 | } 64 | 65 | MultiPolyLineVisual.PositionsList = allPolylines; 66 | 67 | // We can also set IsClosed to close (connect first and last point) all the polylines 68 | MultiPolyLineVisual.IsClosed = true; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Lines3D/WireframeTypesSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Lines3D 16 | { 17 | /// 18 | /// Interaction logic for WireframeTypesSample.xaml 19 | /// 20 | public partial class WireframeTypesSample : Page 21 | { 22 | public WireframeTypesSample() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/MouseCameraControllerSamples/HorizontalCameraMovement.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.MouseCameraControllerSamples 16 | { 17 | /// 18 | /// Interaction logic for HorizontalCameraMovement.xaml 19 | /// 20 | public partial class HorizontalCameraMovement : Page 21 | { 22 | public HorizontalCameraMovement() 23 | { 24 | InitializeComponent(); 25 | 26 | UpdateCamera1RotationCenter(); 27 | UpdateCamera2RotationCenter(); 28 | } 29 | 30 | private void OnCamera1MoveEnded(object sender, EventArgs e) 31 | { 32 | UpdateCamera1RotationCenter(); 33 | } 34 | 35 | private void OnCamera2MoveEnded(object sender, EventArgs e) 36 | { 37 | UpdateCamera2RotationCenter(); 38 | } 39 | 40 | private void UpdateCamera1RotationCenter() 41 | { 42 | // Move the ColoredAxisVisual3D so that it will show the current center of camera rotation 43 | AxisTranslation1.OffsetX = Camera1.TargetPosition.X + Camera1.Offset.X; 44 | AxisTranslation1.OffsetY = Camera1.TargetPosition.Y + Camera1.Offset.Y; 45 | AxisTranslation1.OffsetZ = Camera1.TargetPosition.Z + Camera1.Offset.Z; 46 | } 47 | 48 | private void UpdateCamera2RotationCenter() 49 | { 50 | // Move the ColoredAxisVisual3D so that it will show the current center of camera rotation 51 | AxisTranslation2.OffsetX = Camera2.TargetPosition.X + Camera2.Offset.X; 52 | AxisTranslation2.OffsetY = Camera2.TargetPosition.Y + Camera2.Offset.Y; 53 | AxisTranslation2.OffsetZ = Camera2.TargetPosition.Z + Camera2.Offset.Z; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/MouseCameraControllerSamples/MouseCameraControllerIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | Great camera control is the heart of any 3D application.\n 17 | \n 18 | It allows user of the application to control the view of the 3D scene. Simple camera control can make the application feel natural and easy to use.\n 19 | \n 20 | The main camera controller in Ab3d.PowerToys library is \!MouseCameraController\!.\n 21 | \n 22 | MouseCameraController allows user to rotate, move and zoom camera with mouse or with touch. It provides many properties that enable customizing the camera control.\n 23 | \n 24 | See the samples in this section to see a demonstration of the MouseCameraController.\n 25 | \n 26 | Note also that MouseCameraController can be used with any type of camera (TargetPositionCamera, FreeCamera, FirstPersonCamera, etc.). 27 | The type of camera greatly influences what will happen when user rotates the camera - with TargetPositionCamera the scene will rotate around TargetPosition, but with FirstPersonCamera the view will rotate around as if user would rotate the head around. 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/MouseCameraControllerSamples/MouseCameraControllerIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.MouseCameraControllerSamples 6 | { 7 | public partial class MouseCameraControllerIntroPage : Page 8 | { 9 | public MouseCameraControllerIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/AdvancedObjects3DIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | The Ab3d.PowerToys library can be also used to create some advanced 3D objects:\n 17 | \* \!HeightMap\!,\n 18 | \* \!TubePath\!,\n 19 | \* Objects \!extruded\! from a 2D shape,\n 20 | \* 2D shape \!extruded\! along a 3D path,\n 21 | \* \!Lathe\! objects that are created with rotating a 2D shape around a center axis,\n 22 | \* Objects created with \!Boolean operations\!,\n 23 | \* \!Sliced\! 3D objects.\n 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/AdvancedObjects3DIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Objects3D 6 | { 7 | public partial class AdvancedObjects3DIntroPage : Page 8 | { 9 | public AdvancedObjects3DIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/AllUIElementsSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Objects3D 16 | { 17 | /// 18 | /// Interaction logic for AllUIElementsSample.xaml 19 | /// 20 | public partial class AllUIElementsSample : Page 21 | { 22 | public AllUIElementsSample() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/AllVisualsSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Media.Media3D; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | using Ab3d.Common; 16 | using Ab3d.Meshes; 17 | 18 | namespace Ab3d.PowerToys.Samples.Objects3D 19 | { 20 | /// 21 | /// Interaction logic for AllVisualsSample.xaml 22 | /// 23 | public partial class AllVisualsSample : Page 24 | { 25 | public AllVisualsSample() 26 | { 27 | InitializeComponent(); 28 | 29 | 30 | //// Code to add test button: 31 | //var testButton = new Button() 32 | //{ 33 | // Content = "TEST", 34 | // HorizontalAlignment = HorizontalAlignment.Right, 35 | // VerticalAlignment = VerticalAlignment.Bottom, 36 | //}; 37 | 38 | //testButton.Click += delegate (object sender, RoutedEventArgs args) 39 | //{ 40 | // // Place to put test code 41 | //}; 42 | 43 | //MainGrid.Children.Add(testButton); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/MaterialTypeConverterSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Objects3D 16 | { 17 | /// 18 | /// Interaction logic for MaterialTypeConverterSample.xaml 19 | /// 20 | public partial class MaterialTypeConverterSample : Page 21 | { 22 | public MaterialTypeConverterSample() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/Model3DFactorySample.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 41 | 42 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/MultiMaterialBoxVisual3DSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using System.Windows.Media.Media3D; 15 | 16 | namespace Ab3d.PowerToys.Samples.Objects3D 17 | { 18 | /// 19 | /// Interaction logic for MultiMaterialBoxVisual3DSample.xaml 20 | /// 21 | public partial class MultiMaterialBoxVisual3DSample : Page 22 | { 23 | public MultiMaterialBoxVisual3DSample() 24 | { 25 | InitializeComponent(); 26 | 27 | this.Loaded += new RoutedEventHandler(MultiMaterialBoxVisual3DSample_Loaded); 28 | } 29 | 30 | void MultiMaterialBoxVisual3DSample_Loaded(object sender, RoutedEventArgs e) 31 | { 32 | UpdateMaterial(); 33 | } 34 | 35 | private void UpdateMaterial() 36 | { 37 | MultiMaterialBoxVisual3D1.TopMaterial = GetMaterial(TopMaterialComboBox); 38 | MultiMaterialBoxVisual3D1.BottomMaterial = GetMaterial(BottomMaterialComboBox); 39 | MultiMaterialBoxVisual3D1.LeftMaterial = GetMaterial(LeftMaterialComboBox); 40 | MultiMaterialBoxVisual3D1.RightMaterial = GetMaterial(RightMaterialComboBox); 41 | MultiMaterialBoxVisual3D1.FrontMaterial = GetMaterial(FrontMaterialComboBox); 42 | MultiMaterialBoxVisual3D1.BackMaterial = GetMaterial(BackMaterialComboBox); 43 | 44 | MultiMaterialBoxVisual3D1.FallbackMaterial = GetMaterial(FallbackMaterialComboBox); 45 | } 46 | 47 | private Material GetMaterial(ComboBox comboBox) 48 | { 49 | Material material; 50 | 51 | switch (comboBox.SelectedIndex) 52 | { 53 | case 0: 54 | material = null; 55 | break; 56 | 57 | case 1: 58 | material = new DiffuseMaterial(Brushes.LightBlue); 59 | break; 60 | 61 | case 2: 62 | material = new DiffuseMaterial(Brushes.Yellow); 63 | break; 64 | 65 | default: 66 | case 3: 67 | material = new DiffuseMaterial(Brushes.Red); 68 | break; 69 | } 70 | 71 | return material; 72 | } 73 | 74 | private void TopMaterialComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 75 | { 76 | if (this.IsLoaded) 77 | UpdateMaterial(); 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/MultiMaterialBoxesSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Objects3D 16 | { 17 | /// 18 | /// Interaction logic for MultiMaterialBoxesSample.xaml 19 | /// 20 | public partial class MultiMaterialBoxesSample : Page 21 | { 22 | public MultiMaterialBoxesSample() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/Objects3DIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | The Ab3d.PowerToys library defines classes that allow creation of some basic 3D objects.\n 17 | \n 18 | The 3D models can be created in many ways. With classes under the \!Ab3d.Meshes\! namespace it is possible to create MeshGeometry3D objects.\n 19 | \n 20 | The \!Ab3d.Models.Model3DFactory\! class can be used to create basic 3D objects as GeometryModel3D objects.\n 21 | \n 22 | To create 3D objects in \!XAML\! and immediately see the results in Visual Studio designer use the classes in \!Ab3d.Visuals\! or \!Ab3d.UIElements\!.\n 23 | \n 24 | The difference between 3D objects defined under Ab3d.Visuals and Ab3d.UIElements is that the object under UIElements are derived from UIElement3D and therefore have support for input, focusing, and eventing. They also define \!ToolTip\! property that can be used to simply shown a ToolTip when mouse is over the 3D element. The 3D objects under Ab3d.Visuals are derived from ModelVisual3D and are therefore more lightweight.\n 25 | \n 26 | To make creation of 3D object in XAML even simpler, the Material and BackMaterial property can be simply set by defining its color. This is done with \!MaterialTypeConverter\! that converts color name into DiffuseMaterial with SolidColorBrush.\n 27 | \n 28 | The creation of objects is highly optimized to make the creation as fast as possible. 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/Objects3DIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Objects3D 6 | { 7 | public partial class Objects3DIntroPage : Page 8 | { 9 | public Objects3DIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/SkyboxSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Objects3D 16 | { 17 | /// 18 | /// Interaction logic for SkyboxSample.xaml 19 | /// 20 | public partial class SkyboxSample : Page 21 | { 22 | public SkyboxSample() 23 | { 24 | InitializeComponent(); 25 | } 26 | 27 | private void Camera1_OnCameraChanged(object sender, RoutedEventArgs e) 28 | { 29 | SkyBoxCamera.Heading = Camera1.Heading; 30 | SkyBoxCamera.Attitude = Camera1.Attitude; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/StreamLinesSample.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 26 | 27 | 35 | 36 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Objects3D/UIElementsToolTipSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Objects3D 16 | { 17 | /// 18 | /// Interaction logic for UIElementsToolTipSample.xaml 19 | /// 20 | public partial class UIElementsToolTipSample : Page 21 | { 22 | public UIElementsToolTipSample() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Other/DXEngineSamples.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | Ab3d.PowerToys uses WPF 3D rendering engine.\n 15 | \n 16 | This is sufficient for many use cases, but if you want much better performance, want to render millions of objects or want much better rendering quality with advanced materials, 17 | then check the Ab3d.DXEngine.\n 18 | \n 19 | \!Ab3d.DXEngine - a DirectX 11 rendering engine\! that can be easily added to an existing application that uses Ab3d.PowerToys library. 20 | 21 | 22 | 23 | Click here to open Ab3d.DXEngine samples project 24 | 25 | 26 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Other/DXEngineSamples.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Other 16 | { 17 | /// 18 | /// Interaction logic for DXEngineSamples.xaml 19 | /// 20 | public partial class DXEngineSamples : Page 21 | { 22 | private string _sampleSolutionPath; 23 | 24 | public DXEngineSamples() 25 | { 26 | InitializeComponent(); 27 | 28 | // Try to find path to DXEngine's samples solution 29 | // NOTE: This only works for installed samples and not for samples from GitHub - there we cannot know where the DXEngine samples are 30 | _sampleSolutionPath = System.IO.Path.Combine( 31 | AppDomain.CurrentDomain.BaseDirectory, 32 | @"..\..\..\..\Ab3d.DXEngine\Ab3d.DXEngine MAIN SAMPLES.sln"); 33 | 34 | if (System.IO.File.Exists(_sampleSolutionPath)) 35 | { 36 | OpenSolutionTextBlock.Visibility = Visibility.Visible; 37 | 38 | SampleImage.Cursor = Cursors.Hand; 39 | SampleImage.MouseLeftButtonUp += SampleImage_OnMouseLeftButtonUp; 40 | } 41 | } 42 | 43 | private void Hyperlink_OnClick(object sender, RoutedEventArgs e) 44 | { 45 | OpenSolutionHyperlink.IsEnabled = false; 46 | OpenSamplesSolution(); 47 | } 48 | 49 | private void SampleImage_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e) 50 | { 51 | OpenSamplesSolution(); 52 | } 53 | 54 | private void OpenSamplesSolution() 55 | { 56 | try 57 | { 58 | System.Diagnostics.Process.Start(_sampleSolutionPath); 59 | } 60 | catch (Exception ex) 61 | { 62 | MessageBox.Show(ex.Message, "Error opening solution", MessageBoxButton.OK, MessageBoxImage.Error); 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Other/IntroductionPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | using System.Windows.Data; 5 | using System.Windows.Navigation; 6 | using Ab3d.Cameras; 7 | using Ab3d.PowerToys.Samples.Common; 8 | 9 | namespace Ab3d.PowerToys.Samples.Other 10 | { 11 | public partial class IntroductionPage : Page 12 | { 13 | public IntroductionPage() 14 | { 15 | InitializeComponent(); 16 | 17 | // Revision number defines the type of assembly: 18 | // version from 0 ... 999 - evaluation version from evaluation installer 19 | // version from 1000 ... 1999 - commercial version from commercial installer 20 | // version above 2000 - version from NuGet 21 | 22 | bool isNuGetVersion = typeof(BaseCamera).Assembly.GetName().Version.Revision >= 2000; 23 | 24 | // Show info that for .Net Core and .Net 5.0+ it is recommended to use versions from NuGet 25 | NuGetVersionInfoTextBlockEx.Visibility = isNuGetVersion ? Visibility.Collapsed : Visibility.Visible; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Other/SupportPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Windows; 5 | using System.Windows.Controls; 6 | using System.Windows.Data; 7 | using System.Windows.Documents; 8 | using System.Windows.Input; 9 | using System.Windows.Media; 10 | using System.Windows.Media.Imaging; 11 | using System.Windows.Shapes; 12 | using System.IO; 13 | using System.Net; 14 | using System.Windows.Navigation; 15 | using System.Diagnostics; 16 | 17 | namespace Ab3d.PowerToys.Samples.Other 18 | { 19 | /// 20 | /// Interaction logic for SupportPage.xaml 21 | /// 22 | public partial class SupportPage : Page 23 | { 24 | public SupportPage() 25 | { 26 | InitializeComponent(); 27 | } 28 | 29 | private void link_navigate(object sender, RequestNavigateEventArgs e) 30 | { 31 | Process.Start(e.Uri.ToString()); 32 | e.Handled = true; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Other/WinFormsInfo.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Other/WinFormsInfo.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.Other 16 | { 17 | /// 18 | /// Interaction logic for WinFormsInfo.xaml 19 | /// 20 | public partial class WinFormsInfo : Page 21 | { 22 | public WinFormsInfo() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/CameraControlPanel.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using System.Windows.Media.Media3D; 15 | using Ab3d.Controls; 16 | 17 | namespace Ab3d.PowerToys.Samples.OtherCameraControllers 18 | { 19 | /// 20 | /// Interaction logic for CameraControlPanel.xaml 21 | /// 22 | public partial class CameraControlPanel : Page 23 | { 24 | public CameraControlPanel() 25 | { 26 | InitializeComponent(); 27 | } 28 | 29 | private void ResetCamera_Click(object sender, RoutedEventArgs e) 30 | { 31 | // make all the changes at once 32 | SceneCamera1.BeginInit(); 33 | 34 | SceneCamera1.Heading = -30; 35 | SceneCamera1.Attitude = -15; 36 | SceneCamera1.Distance = 2; 37 | SceneCamera1.Offset = new Vector3D(0, 0, 0); 38 | 39 | SceneCamera1.EndInit(); 40 | } 41 | 42 | private void MoveAmountSlider_OnValueChanged(object sender, RoutedPropertyChangedEventArgs e) 43 | { 44 | if (MoveAmountSlider.Value <= 0.1) 45 | MoveAmountValueTextBlock.Text = "(auto)"; 46 | else 47 | MoveAmountValueTextBlock.Text = string.Format("{0:0}", MoveAmountSlider.Value); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/CameraControllerIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | Ab3d.PowerToys also comes with other camera Controllers that can be used to control the camera or show the orientation of the camera.\n 17 | \n 18 | The following are the additional camera controllers:\n 19 | \n 20 | The \!CameraNavigationCircles\! shows camera axes with axis circles and can be used to rotate the camera.\n 21 | \n 22 | The \!CameraControlPanel\! shows nice buttons to rotate the camera and move the camera closer or farther away.\n 23 | \n 24 | The \!CameraPreviewPanel\! graphically shows at which angle the camera is looking at the object or scene.\n 25 | \n 26 | The \!CameraAxisPanel\! shows the axis orientation for the target camera.\n 27 | \n 28 | The \!MouseCameraControllerInfo\! control graphically shows which mouse button and key combination is used to rotate and move the camera.\n 29 | \n 30 | The \!XInputCameraController\! can be used to control the camera with game controller (for example XBox controller).\n 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/CameraControllerIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.OtherCameraControllers 6 | { 7 | public partial class CameraControllerIntroPage : Page 8 | { 9 | public CameraControllerIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void link_navigate(object sender, RequestNavigateEventArgs e) 15 | { 16 | Process.Start(e.Uri.ToString()); 17 | e.Handled = true; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/CustomControlPanel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows.Media.Imaging; 6 | 7 | namespace Ab3d.PowerToys.Samples.OtherCameraControllers 8 | { 9 | public class CustomControlPanel : Ab3d.Controls.CameraControlPanel 10 | { 11 | public CustomControlPanel() 12 | : base() 13 | { 14 | } 15 | 16 | protected override System.Windows.Media.Imaging.BitmapSource GetUnSelectedBitmapForImageName(string imageName) 17 | { 18 | return GetBitmapForImageName(imageName, false); 19 | } 20 | 21 | protected override System.Windows.Media.Imaging.BitmapSource GetSelectedBitmapForImageName(string imageName) 22 | { 23 | return GetBitmapForImageName(imageName, true); 24 | } 25 | 26 | protected virtual BitmapSource GetBitmapForImageName(string imageName, bool isSelected) 27 | { 28 | BitmapImage bitmap; 29 | string selectedString; 30 | string imageUri; 31 | 32 | if (isSelected) 33 | selectedString = "_selected"; 34 | else 35 | selectedString = ""; 36 | 37 | // NOTE: The images build action is set to Resource 38 | imageUri = string.Format("/Resources/CustomControlPanel/{0}{1}.png", imageName, selectedString); 39 | 40 | bitmap = new BitmapImage(new Uri(imageUri, UriKind.RelativeOrAbsolute)); 41 | 42 | return bitmap; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/CustomControlPanelSample.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 20 | 21 | Instructions to change color from original orange to blue with Adobe Photoshop: 22 | 23 | 24 | 1. Open all selected button images. 25 | 2. Desaturate colors (Saturation: -100) in all images to convert the image into grayscale. 26 | 3. In one image add color overlay. Select blend mode: Hard Light. 27 | 4. Select color: R: 38, G: 140, B: 217 28 | 5. Save the image as blue selected arrow. 29 | 6. Copy applied overlay to other images. Save other images. 30 | 31 | Create not selected images: 32 | 7. Just change the blend mode into Soft light. 33 | 8. Save the image as not selected blue arrow. 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/CustomControlPanelSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using System.Windows.Media.Media3D; 15 | 16 | namespace Ab3d.PowerToys.Samples.OtherCameraControllers 17 | { 18 | /// 19 | /// Interaction logic for CustomControlPanelSample.xaml 20 | /// 21 | public partial class CustomControlPanelSample : Page 22 | { 23 | public CustomControlPanelSample() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/VerticalCameraControlPanelSample.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/OtherCameraControllers/VerticalCameraControlPanelSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using System.Windows.Media.Media3D; 15 | 16 | namespace Ab3d.PowerToys.Samples.OtherCameraControllers 17 | { 18 | /// 19 | /// Interaction logic for VerticalCameraControlPanelSample.xaml 20 | /// 21 | public partial class VerticalCameraControlPanelSample : Page 22 | { 23 | public VerticalCameraControlPanelSample() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/PowerToys.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/PowerToys.ico -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("Ab3d.PowerToys.Samples")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("AB4D d.o.o.")] 14 | [assembly: AssemblyProduct("Ab3d.PowerToys.Samples")] 15 | [assembly: AssemblyCopyright("Copyright © by AB4D d.o.o. (www.ab4d.com)")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | //In order to begin building localizable applications, set 25 | //CultureYouAreCodingWith in your .csproj file 26 | //inside a . For example, if you are using US english 27 | //in your source files, set the to en-US. Then uncomment 28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 29 | //the line below to match the UICulture setting in the project file. 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 36 | //(used if a resource is not found in the page, 37 | // or application resource dictionaries) 38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 39 | //(used if a resource is not found in the page, 40 | // app, or any theme specific resource dictionaries) 41 | )] 42 | 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("11.1.0.0")] 55 | [assembly: AssemblyFileVersion("11.1.0.0")] 56 | [assembly: NeutralResourcesLanguageAttribute("en")] 57 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Ab3d.PowerToys.Samples.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Ab3d.PowerToys.Samples.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Ab3d.PowerToys.Samples.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.8.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/ReaderObj/ObjModelVisual3D.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.ReaderObj 16 | { 17 | /// 18 | /// Interaction logic for ObjModelVisual3D.xaml 19 | /// 20 | public partial class ObjModelVisual3D : Page 21 | { 22 | public ObjModelVisual3D() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/ReaderObj/ReadObjFromResources.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 37 | 38 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/ReaderObj/ReaderObjIntroPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | With Ab3d.ReaderObj class it is possible to read \!3D models from obj files.\!\n 17 | \n 18 | Obj file was developed for use in Wavefront's Advanced Visualizer. Because of their simple text format it became very common file format to store 3D models. 19 | It usually comes with mtl file that defines the materials used in obj file.\n 20 | \n 21 | The main differences between obj and 3ds \!obj and 3ds\! (can be read with Ab3d.Reader3ds library) are:\n 22 | ▪ obj is a text file; 3ds is a binary file,\n 23 | ▪ 3ds file can define hierarchy of 3D objects with original transformations; obj file does not support hierarchies and transformation,\n 24 | ▪ obj file does not support animations,\n 25 | ▪ 3ds file is not capable of storing texture file names that exceed the 8.3 format; file names in obj file can be in any length.\n 26 | \n 27 | Because obj files are written in text they can be very large. Also when reading the files parse all the values can take some time. 28 | ReaderObj that comes with Ab3d.PowerToys library has been greatly optimized to make parsing the obj file very fast and to reduce the memory usage.\n 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/ReaderObj/ReaderObjIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace Ab3d.PowerToys.Samples.ReaderObj 16 | { 17 | /// 18 | /// Interaction logic for ReaderObjIntroPage.xaml 19 | /// 20 | public partial class ReaderObjIntroPage : Page 21 | { 22 | public ReaderObjIntroPage() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/10x10-texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/10x10-texture.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/3D-mouses-from-3Dconnexion.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/3D-mouses-from-3Dconnexion.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/AssimpViewerSample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/AssimpViewerSample.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CamerasClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CamerasClassDiagram.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/Collada/duckCM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/Collada/duckCM.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveBack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveBack.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveBack_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveBack_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveDown.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveDown_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveDown_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveForward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveForward.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveForward_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveForward_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveLeft.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveLeft_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveLeft_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveRight.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveRight_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveRight_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveUp.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveUp_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/moveUp_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateDown.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateDown_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateDown_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateLeft.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateLeft_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateLeft_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateRight.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateRight_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateRight_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateUp.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateUp_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/CustomControlPanel/rotateUp_selected.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/DXEngine-ArrowsSample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/DXEngine-ArrowsSample.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/HeightMaps/europe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/HeightMaps/europe.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/HeightMaps/europe_height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/HeightMaps/europe_height.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/HeightMaps/readme.txt: -------------------------------------------------------------------------------- 1 | All Earth and Europe images are from 2 | NASA Observatory images: 3 | http://earthobservatory.nasa.gov/Features/BlueMarble/BlueMarble_monthlies.php -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/HeightMaps/simpleHeightMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/HeightMaps/simpleHeightMap.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/HeightMaps/srtm_ramp2.world.500x250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/HeightMaps/srtm_ramp2.world.500x250.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/HeightMaps/world.topo.200407.3x500x250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/HeightMaps/world.topo.200407.3x500x250.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/KinectSample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/KinectSample.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ObjFiles/WaltHead.mtl: -------------------------------------------------------------------------------- 1 | # Material Count: 1 2 | newmtl lambert2SG.001 3 | Ns 92.156863 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.640000 0.640000 0.640000 6 | Ks 0.250000 0.250000 0.250000 7 | Ni 1.000000 8 | d 1.000000 9 | illum 2 10 | 11 | 12 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ObjFiles/dragon_vrip_res3.obj.mtl: -------------------------------------------------------------------------------- 1 | # File produced by Open Asset Import Library (http://www.assimp.sf.net) 2 | # (assimp v3.1.29665513) 3 | 4 | newmtl $Material_0 5 | kd 0.6 0.6 0.6 6 | ka 0.05 0.05 0.05 7 | ks 0.6 0.6 0.6 8 | illum 1 9 | 10 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ObjFiles/dragon_vrip_res3_readme.txt: -------------------------------------------------------------------------------- 1 | "Stanford Dragon" model is created by Stanford University and is one of the most common 3D model used for testing 2 | 3 | The model used here is a lower resolution of the original model (res3). 4 | 5 | The model is downloaded from: 6 | https://en.wikipedia.org/wiki/List_of_common_3D_test_models -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ObjFiles/house with trees.mtl: -------------------------------------------------------------------------------- 1 | # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware 2 | # File Created: 16.09.2015 22:35:27 3 | 4 | newmtl trava 5 | Ns 9.999999 6 | Ni 1.500000 7 | d 1.000000 8 | Tr 0.000000 9 | Tf 1.000000 1.000000 1.000000 10 | illum 2 11 | Ka 0.047059 0.403922 0.019608 12 | Kd 0.047059 0.403922 0.019608 13 | Ks 0.000000 0.000000 0.000000 14 | Ke 0.000000 0.000000 0.000000 15 | 16 | newmtl face 17 | Ns 9.999999 18 | Ni 1.500000 19 | d 1.000000 20 | Tr 0.000000 21 | Tf 1.000000 1.000000 1.000000 22 | illum 2 23 | Ka 0.749020 0.698039 0.498039 24 | Kd 0.749020 0.698039 0.498039 25 | Ks 0.000000 0.000000 0.000000 26 | Ke 0.000000 0.000000 0.000000 27 | 28 | newmtl 15___Default 29 | Ns 9.999999 30 | Ni 1.500000 31 | d 1.000000 32 | Tr 0.000000 33 | Tf 1.000000 1.000000 1.000000 34 | illum 2 35 | Ka 0.090196 0.090196 0.090196 36 | Kd 0.090196 0.090196 0.090196 37 | Ks 0.000000 0.000000 0.000000 38 | Ke 0.000000 0.000000 0.000000 39 | 40 | newmtl trausers 41 | Ns 9.999999 42 | Ni 1.500000 43 | d 1.000000 44 | Tr 0.000000 45 | Tf 1.000000 1.000000 1.000000 46 | illum 2 47 | Ka 0.000000 0.247059 0.521569 48 | Kd 0.000000 0.247059 0.521569 49 | Ks 0.000000 0.000000 0.000000 50 | Ke 0.000000 0.000000 0.000000 51 | 52 | newmtl les 53 | Ns 9.999999 54 | Ni 1.500000 55 | d 1.000000 56 | Tr 0.000000 57 | Tf 1.000000 1.000000 1.000000 58 | illum 2 59 | Ka 0.674510 0.486275 0.192157 60 | Kd 0.674510 0.486275 0.192157 61 | Ks 0.000000 0.000000 0.000000 62 | Ke 0.000000 0.000000 0.000000 63 | 64 | newmtl pulover 65 | Ns 9.999999 66 | Ni 1.500000 67 | d 1.000000 68 | Tr 0.000000 69 | Tf 1.000000 1.000000 1.000000 70 | illum 2 71 | Ka 0.105882 0.666667 0.105882 72 | Kd 0.105882 0.666667 0.105882 73 | Ks 0.000000 0.000000 0.000000 74 | Ke 0.000000 0.000000 0.000000 75 | 76 | newmtl beton 77 | Ns 9.999999 78 | Ni 1.500000 79 | d 1.000000 80 | Tr 0.000000 81 | Tf 1.000000 1.000000 1.000000 82 | illum 2 83 | Ka 0.862745 0.862745 0.862745 84 | Kd 0.862745 0.862745 0.862745 85 | Ks 0.000000 0.000000 0.000000 86 | Ke 0.000000 0.000000 0.000000 87 | 88 | newmtl cegu 89 | Ns 9.999999 90 | Ni 1.500000 91 | d 1.000000 92 | Tr 0.000000 93 | Tf 1.000000 1.000000 1.000000 94 | illum 2 95 | Ka 0.662745 0.231373 0.145098 96 | Kd 0.662745 0.231373 0.145098 97 | Ks 0.000000 0.000000 0.000000 98 | Ke 0.000000 0.000000 0.000000 99 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ObjFiles/robotarm.mtl: -------------------------------------------------------------------------------- 1 | # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware 2 | # File Created: 10.04.2017 13:55:19 3 | 4 | newmtl 09___Default 5 | Ns 10.0000 6 | Ni 1.5000 7 | d 1.0000 8 | Tr 0.0000 9 | Tf 1.0000 1.0000 1.0000 10 | illum 2 11 | Ka 0.6000 0.4235 0.2353 12 | Kd 0.6000 0.4235 0.2353 13 | Ks 0.0000 0.0000 0.0000 14 | Ke 0.0000 0.0000 0.0000 15 | 16 | newmtl 01___Default 17 | Ns 10.0000 18 | Ni 1.5000 19 | d 1.0000 20 | Tr 0.0000 21 | Tf 1.0000 1.0000 1.0000 22 | illum 2 23 | Ka 0.4275 0.4275 0.4275 24 | Kd 0.4275 0.4275 0.4275 25 | Ks 0.0000 0.0000 0.0000 26 | Ke 0.0000 0.0000 0.0000 27 | 28 | newmtl 13___Default 29 | Ns 10.0000 30 | Ni 1.5000 31 | d 1.0000 32 | Tr 0.0000 33 | Tf 1.0000 1.0000 1.0000 34 | illum 2 35 | Ka 0.6157 0.1804 0.1804 36 | Kd 0.6157 0.1804 0.1804 37 | Ks 0.5580 0.5580 0.5580 38 | Ke 0.0000 0.0000 0.0000 39 | 40 | newmtl 07___Default 41 | Ns 10.0000 42 | Ni 1.5000 43 | d 1.0000 44 | Tr 0.0000 45 | Tf 1.0000 1.0000 1.0000 46 | illum 2 47 | Ka 0.2118 0.1843 0.7529 48 | Kd 0.2118 0.1843 0.7529 49 | Ks 0.0000 0.0000 0.0000 50 | Ke 0.0000 0.0000 0.0000 51 | 52 | newmtl 02___Default 53 | Ns 10.0000 54 | Ni 1.5000 55 | d 1.0000 56 | Tr 0.0000 57 | Tf 1.0000 1.0000 1.0000 58 | illum 2 59 | Ka 0.6549 0.5725 0.0118 60 | Kd 0.6549 0.5725 0.0118 61 | Ks 0.0000 0.0000 0.0000 62 | Ke 0.0000 0.0000 0.0000 63 | 64 | newmtl 03___Default 65 | Ns 10.0000 66 | Ni 1.5000 67 | d 1.0000 68 | Tr 0.0000 69 | Tf 1.0000 1.0000 1.0000 70 | illum 2 71 | Ka 0.9765 0.9020 0.0863 72 | Kd 0.9765 0.9020 0.0863 73 | Ks 0.0000 0.0000 0.0000 74 | Ke 0.0000 0.0000 0.0000 75 | 76 | newmtl 08___Default 77 | Ns 10.0000 78 | Ni 1.5000 79 | d 1.0000 80 | Tr 0.0000 81 | Tf 1.0000 1.0000 1.0000 82 | illum 2 83 | Ka 1.0000 0.4863 0.0275 84 | Kd 1.0000 0.4863 0.0275 85 | Ks 0.0000 0.0000 0.0000 86 | Ke 0.0000 0.0000 0.0000 87 | 88 | newmtl 15___Default 89 | Ns 10.0000 90 | Ni 1.5000 91 | d 1.0000 92 | Tr 0.0000 93 | Tf 1.0000 1.0000 1.0000 94 | illum 2 95 | Ka 0.9373 0.9373 0.9373 96 | Kd 0.9373 0.9373 0.9373 97 | Ks 0.0000 0.0000 0.0000 98 | Ke 0.0000 0.0000 0.0000 99 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ObjFiles/robotarm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/ObjFiles/robotarm.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ObjFiles/ship_boat_readme.txt: -------------------------------------------------------------------------------- 1 | Ship boat model was created by joao, lisboa 2 | http://artist-3d.com/free_3d_models/dnm/model_disp.php?uid=2859 -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/PowerToysTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/PowerToysTexture.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/PowerToysWinFormsSample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/PowerToysWinFormsSample.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/PowerToys_Model3ds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/PowerToys_Model3ds.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/PowerToys_box_front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/PowerToys_box_front.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/PowerToys_box_side.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/PowerToys_box_side.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/Settings.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysBack512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysBack512.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysDown512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysDown512.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysFront512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysFront512.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysLeft512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysLeft512.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysRight512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysRight512.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysUp512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/SkyboxTextures/CloudyLightRaysUp512.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/SkyboxTextures/readme.txt: -------------------------------------------------------------------------------- 1 | Skybox images from: 2 | https://www.93i.de/products/media/skybox-texture-set-1 -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/OAKPLY1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/OAKPLY1.JPG -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/coffee.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/coffee_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/coffee_logo.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/coffee_plate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/TransparencyUseCaseModels/coffee_plate.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/TreeTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/TreeTexture.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/XBox-controller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/XBox-controller.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/ab4d-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/ab4d-logo.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/cannon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/cannon.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/grass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/grass.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/landscapeTexture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/landscapeTexture.jpg -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/new_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/new_icon.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/robotarm-upper-part.3DS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/robotarm-upper-part.3DS -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/robotarm.3DS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/robotarm.3DS -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/soldier.X: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/soldier.X -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/soldier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/soldier.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/updated_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/updated_icon.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/wpf3d/duck.wpf3d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/wpf3d/duck.wpf3d -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/wpf3d/duckCM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/wpf3d/duckCM.png -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/wpf3d/house with trees.wpf3d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/wpf3d/house with trees.wpf3d -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/wpf3d/robotarm.wpf3d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/wpf3d/robotarm.wpf3d -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Resources/wpf3d/teapot-hires.wpf3d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab3d.PowerToys.Wpf.Samples/764d6bcfed4bdefbbcce7ffef14d4c34d2fa8721/Ab3d.PowerToys.Samples/Resources/wpf3d/teapot-hires.wpf3d -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Text3D/AdjustingTextDirectionSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Media.Media3D; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | using Ab3d.Common.Cameras; 16 | 17 | namespace Ab3d.PowerToys.Samples.Text3D 18 | { 19 | /// 20 | /// Interaction logic for AdjustingTextDirectionSample.xaml 21 | /// 22 | public partial class AdjustingTextDirectionSample : Page 23 | { 24 | public AdjustingTextDirectionSample() 25 | { 26 | InitializeComponent(); 27 | 28 | Camera1.StartRotation(45, 0); 29 | 30 | Camera1.CameraChanged += Camera1OnCameraChanged; 31 | } 32 | 33 | 34 | private void Camera1OnCameraChanged(object o, CameraChangedRoutedEventArgs cameraChangedRoutedEventArgs) 35 | { 36 | // To check if we need to flip TextDirection, 37 | // we first calculate the 3D vector that points into the direction from which the text is correctly seen. 38 | // This can be get with calculating cross product from TextDirection and UpDirection - getting perpendicular vector to those two vectors. 39 | Vector3D textFaceVector = Vector3D.CrossProduct(CenteredTextVisual2.TextDirection, CenteredTextVisual2.UpDirection); 40 | 41 | // Now calculate dot product from textFaceVector and camera's LookDirection 42 | // If the result is negative, then those two vectors are facing in opposite direction. 43 | // This is a desired result - text is facing towards camera and camera towards text. 44 | // But if the result is positive, then text is seen correctly from the other side. 45 | // In this case we flip the TextDirection by multiplying it with -1. 46 | // In our case this flips between initial (1, 0, 0) and (-1, 0, 0) vectors. 47 | if (Vector3D.DotProduct(textFaceVector, Camera1.LookDirection) > 0) 48 | CenteredTextVisual2.TextDirection = CenteredTextVisual2.TextDirection * (-1); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Text3D/LineWithTextSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using Ab3d.Visuals; 15 | 16 | namespace Ab3d.PowerToys.Samples.Text3D 17 | { 18 | /// 19 | /// Interaction logic for LineWithTextSample.xaml 20 | /// 21 | public partial class LineWithTextSample : Page 22 | { 23 | public LineWithTextSample() 24 | { 25 | InitializeComponent(); 26 | 27 | UseTextBlockVisual3DInfoControl.InfoText = 28 | @"When checked, then LineWithTextVisual3D is using a TextBlockVisual3D to show 3D text. When unchecked then 3D lines are used to show the text (using an old plotter font). 29 | 30 | Using TextBlockVisual3D provides much more text rendering options and allows using any font but may produce some problems because of showing semi-transparent texture (sorting objects by camera distance; or using Ab3d.DXEngine and alpha-clip threshold)."; 31 | } 32 | 33 | private void OnUseTextBlockVisual3DCheckedChanged(object sender, RoutedEventArgs e) 34 | { 35 | if (!this.IsLoaded) 36 | return; 37 | 38 | 39 | var useTextBlockVisual3D = UseTextBlockVisual3DCheckBox.IsChecked ?? false; 40 | 41 | foreach (var lineWithTextVisual3D in MainViewport.Children.OfType()) 42 | { 43 | lineWithTextVisual3D.UseTextBlockVisual3D = useTextBlockVisual3D; 44 | 45 | if (useTextBlockVisual3D) 46 | { 47 | // When UseTextBlockVisual3D is set to true, we can change text rendering options on UsedTextBlockVisual3D property: 48 | // The following properties are already set by the LineWithTextVisual3D: 49 | //Text = this.Text, 50 | //Position = textCenterPosition, 51 | //PositionType = PositionTypes.Center, 52 | //TextDirection = lineDirection, 53 | //UpDirection = this.TextUpDirection, 54 | //Size = new Size(0, this.FontSize), // Set only height; width will be set automatically by the TextBlockVisual3D 55 | //Foreground = new SolidColorBrush(this.LineColor), 56 | 57 | lineWithTextVisual3D.UsedTextBlockVisual3D.FontFamily = new FontFamily("Arial"); 58 | lineWithTextVisual3D.UsedTextBlockVisual3D.RenderBitmapSize = new Size(256, 64); 59 | } 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Text3D/SymbolCharactersSample.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 33 | 34 | 40 | 41 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Text3D/Text3DIntroPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows.Controls; 3 | using System.Windows.Navigation; 4 | 5 | namespace Ab3d.PowerToys.Samples.Text3D 6 | { 7 | public partial class Text3DIntroPage : Page 8 | { 9 | public Text3DIntroPage() 10 | { 11 | InitializeComponent(); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/Text3D/TextDirectionsSample.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | using System.Windows.Media.Media3D; 15 | 16 | namespace Ab3d.PowerToys.Samples.Text3D 17 | { 18 | /// 19 | /// Interaction logic for TextDirectionsSample.xaml 20 | /// 21 | public partial class TextDirectionsSample : Page 22 | { 23 | public TextDirectionsSample() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/UseCases/ArrowsSample.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Ab3d.PowerToys.Samples/UseCases/InteractiveUserControl.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |