Инструментарий Helix вращать манипулятор с вложенными моделями

У меня есть окно просмотра спирали с 3 сферами сгруппированы. Предполагается, что это симуляция руки робота. Вложенность обязательна.

  • Сфера А - это плечо (с поворотным манипулятором).
  • Сфера B - это локоть (с поворотным манипулятором).
  • Сфера С - это запястье.

Первый поворотный манипулятор работает как положено. Вы тащите манипулятор, и он вращает сферу A и ее дочерние элементы (другие сферы).

Второй поворотный манипулятор не работает должным образом. Вы тащите манипулятор, и он качает детей. Если вы перетащите его вокруг первой сферы, он будет работать как положено. Так что ожидается его перетаскивание вокруг источника вместо его текущей позиции.

Я пробовал это с установкой точки разворота, но это только ухудшает ситуацию.

Helix Toolkit вращать манипулятор

Youtube видео тестового приложения

Как сделать так, чтобы манипулятор был вложенным.

<Window x:Class="Wpf3D.Views.Robot3"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:helix="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf"
    xmlns:local="clr-namespace:Wpf3D.Views"
    xmlns:models="clr-namespace:Wpf3D.Models"
    mc:Ignorable="d"
    Title="Robot3" Height="600" Width="800">
<Grid>
    <helix:HelixViewport3D 
        x:Name="View3D" 
        Background="LightGray"
        ShowCoordinateSystem="True" 
        ShowViewCube="True"
        ModelUpDirection="0,1,0"
        ZoomExtentsWhenLoaded="True">
        <helix:HelixViewport3D.DefaultCamera>
            <PerspectiveCamera Position="0,1000,4000" LookDirection="0,0,-1" UpDirection="0,1,0" FieldOfView="45" />
        </helix:HelixViewport3D.DefaultCamera>

        <helix:DefaultLights ShowLights="{Binding IsChecked, ElementName=ViewDefaultLights}" />

        <ContainerUIElement3D x:Name="A" Transform="{helix:Translate 0,0,0}">
            <helix:SphereVisual3D Fill="Red" />
            <helix:RotateManipulator Color="Blue" Axis="0,0,1" TargetTransform="{Binding Transform, ElementName=A}" Diameter="4" InnerDiameter="6" />

            <ContainerUIElement3D x:Name="B" Transform="{helix:Translate 20,0,0}">
                <helix:SphereVisual3D Fill="Orange" />
                <helix:RotateManipulator Color="Green" Axis="0,0,1" TargetTransform="{Binding Transform, ElementName=B}" Diameter="4" InnerDiameter="6" />

                <ContainerUIElement3D x:Name="C" Transform="{helix:Translate 20,0,0}">
                    <helix:SphereVisual3D Fill="Yellow" />
                </ContainerUIElement3D>
            </ContainerUIElement3D>

        </ContainerUIElement3D>

    </helix:HelixViewport3D>
</Grid>
</Window>

0 ответов

Другие вопросы по тегам