6

helixtoolkit を使用して WPF アプリで 3d オブジェクトを表示し、x、y、z 軸に沿って 3 つの変数 (ユーザー入力) に従って回転させようとしています。しかし、らせんツールキットで 3D オブジェクトを回転させる関数が見つかりませんでした。

C# コード

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

namespace HelixTrial
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            ModelImporter importer = new ModelImporter();
            Model3D model = importer.Load("D:\\Crate1.obj");
            Models.Content = model;

            // need to apply rotation to the model using three x,y,z variables
        }

    }
}

XAML コード

<Window x:Class="HelixTrial.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:HelixToolkit="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf"
    Title="MainWindow" Height="500" Width="500">
    <Grid  Width="400" Height="400">
        <HelixToolkit:HelixViewport3D x:Name="Viewport" ZoomExtentsWhenLoaded="True">
            <HelixToolkit:SunLight/>
            <ModelVisual3D x:Name="Models"/>
        </HelixToolkit:HelixViewport3D>
    </Grid>
</Window>
4

1 に答える 1

9

これは標準のWPF 関数であるため、ツールキットにはありませんでした。したがって、あなたの例では、次のようになります。

<ModelVisual3D x:Name="Models">
    <ModelVisual3D.Transform>
        <Transform3DGroup>
            <RotateTransform3D>
                <RotateTransform3D.Rotation>
                     <AxisAngleRotation3D Axis="1,0,0" Angle="{Binding varX}"/>
                </RotateTransform3D.Rotation>
            </RotateTransform3D>
            <RotateTransform3D>
                <RotateTransform3D.Rotation>
                    <AxisAngleRotation3D Axis="0,1,0" Angle="{Binding varY}"/>
                </RotateTransform3D.Rotation>
            </RotateTransform3D>
            <RotateTransform3D>
                <RotateTransform3D.Rotation>
                     <AxisAngleRotation3D Axis="0,0,1" Angle="{Binding varZ}"/>
                </RotateTransform3D.Rotation>
            </RotateTransform3D>
        </Transform3DGroup>
    </ModelVisual3D.Transform>
</ModelVisual3D>
于 2015-03-11T09:35:15.723 に答える