Avalon. Content in 3D
От: LIMIT  
Дата: 03.11.05 10:20
Оценка:
Столкнулся лбом с такой проблемой: не могу разместить, например, Button в 3D сцене, конкретно в Viewport3D, Максимум что получается:

вот код:

<Window x:Class="MyContentIn3D.Window1"
    xmlns="http://schemas.microsoft.com/winfx/avalon/2005"
    xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"
    Title="MyContentIn3D"    
    >
  
  
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition Height="25"/>
        <RowDefinition Height="*"/>
      </Grid.RowDefinitions>

      <DockPanel        
        Grid.Row="0">
        
          <Button
            Click="btn1_Click" 
            DockPanel.Dock="Left"
            Content="Push!"/>

      </DockPanel>

      <Viewport3D
        Grid.Row="1">

        <Viewport3D.Camera>
          <PerspectiveCamera 
            FarPlaneDistance="100" 
            LookAtPoint="0,0,0" 
            Up="0,1,0" 
            NearPlaneDistance="1" 
            Position="1,1,3" 
            FieldOfView="60" />
        </Viewport3D.Camera>



        <Viewport3D.Models>
          <Model3DGroup >
            <AmbientLight Color="White" />
            <GeometryModel3D>
              
              <GeometryModel3D.Geometry>                
                <MeshGeometry3D
                  TriangleIndices="0,1,2 3,4,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 "
                  Normals="0,0,-1 0,0,-1 0,0,-1 0,0,-1 0,0,-1 0,0,-1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,-1,0 0,-1,0 0,-1,0 0,-1,0 0,-1,0 0,-1,0 1,0,0 1,0,0 1,0,0 1,0,0 1,0,0 1,0,0 0,1,0 0,1,0 0,1,0 0,1,0 0,1,0 0,1,0 -1,0,0 -1,0,0 -1,0,0 -1,0,0 -1,0,0 -1,0,0 "
                  TextureCoordinates="1,1 1,0 0,0 0,0 0,1 1,1 0,1 1,1 1,0 1,0 0,0 0,1 0,1 1,1 1,0 1,0 0,0 0,1 1,1 1,0 0,0 0,0 0,1 1,1 1,0 0,0 0,1 0,1 1,1 1,0 0,0 0,1 1,1 1,1 1,0 0,0 "
                  Positions="-0.5,-0.5,-0.5 -0.5,0.5,-0.5 0.5,0.5,-0.5 0.5,0.5,-0.5 0.5,-0.5,-0.5 -0.5,-0.5,-0.5 -0.5,-0.5,0.5 0.5,-0.5,0.5 0.5,0.5,0.5 0.5,0.5,0.5 -0.5,0.5,0.5 -0.5,-0.5,0.5 -0.5,-0.5,-0.5 0.5,-0.5,-0.5 0.5,-0.5,0.5 0.5,-0.5,0.5 -0.5,-0.5,0.5 -0.5,-0.5,-0.5 0.5,-0.5,-0.5 0.5,0.5,-0.5 0.5,0.5,0.5 0.5,0.5,0.5 0.5,-0.5,0.5 0.5,-0.5,-0.5 0.5,0.5,-0.5 -0.5,0.5,-0.5 -0.5,0.5,0.5 -0.5,0.5,0.5 0.5,0.5,0.5 0.5,0.5,-0.5 -0.5,0.5,-0.5 -0.5,-0.5,-0.5 -0.5,-0.5,0.5 -0.5,-0.5,0.5 -0.5,0.5,0.5 -0.5,0.5,-0.5 "/>
              </GeometryModel3D.Geometry>

              <GeometryModel3D.Material>
                <DiffuseMaterial>
                  <DiffuseMaterial.Brush>
                    <VisualBrush>
                      <VisualBrush.Visual>                        
                          <Button
                            Width="200"
                            Height="100"
                            Content="Кнопка1"/>                        
                      </VisualBrush.Visual>
                    </VisualBrush>
                  </DiffuseMaterial.Brush>
                </DiffuseMaterial>
              </GeometryModel3D.Material>

            </GeometryModel3D>
          </Model3DGroup>
        </Viewport3D.Models>
      </Viewport3D>
    </Grid>
</Window>



НО! Это все просторисунок, тоесть кнопка не интерактивна.
Допустим если я размещаю таким же образом TextBox, и в runtime попытаюсь изменить его значение (Text), то ничего не произойдет, почему-то этот контро даже при задании Name не видим behind-файле.
(c) LIMIT
Avalon. Content in 3D
От: Аноним  
Дата: 05.11.05 12:27
Оценка:
Интерактивности и не должно быть, во всяком случае не в первой версии


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Avalon. Content in 3D
От: LIMIT  
Дата: 06.11.05 13:32
Оценка:
Здравствуйте, kostik_y2k, Вы писали:

_>Интерактивности и не должно быть, во всяком случае не в первой версии


_>
данное сообщение получено с www.gotdotnet.ru

_>ссылка на оригинальное сообщение


Мне кажется вы ошибаетесь. Посмотрите вот эти демки, там интерактивность есть:
Sanjay Parthasarathy and Ben Riga &mdash; Healthcare demo of Windows Presentation Foundation (AKA Avalon)
North Face Demo at the PDC
(c) LIMIT
Re: Avalon. Content in 3D
От: Аноним  
Дата: 06.11.05 15:45
Оценка:
Я наверное не так выразился.
Не возможна интерактивность 2Д-элементов расположенных в 3д-пространстве. Т.е. кнопка в Вашем примере только рисуется на поверхности, нажать на неё пользователь не в состоянии, т.к. это не более чем просто картинка. С некоторыми трюками возможно правда добится результата — вычислять положение мышки и что под ней находится ближе всего; технология называется HitTesting, почитать про это можно тут (инфа немного устарела, но принцип тот же):
http://blogs.msdn.com/danlehen/archive/2004/06/27/167463.aspx
и тут пример:
http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/wcp_samples/html/0c32c08d-dd7f-45e0-a002-f0eb13fd7d4a.asp

В North Face Demo, насколько я помню, управление идёт не мышкой, а клавиатурой. А тут конечно уже больше возможностей управления — достаточно только считывать нажатия клавиш и соответсвенно реагировать в 3д...


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Avalon. Content in 3D
От: LIMIT  
Дата: 07.11.05 09:19
Оценка:
Впринципе так и препологалось как выход.
Делать HitTest.
(c) LIMIT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.