Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обратиться к MeshGeometry3D в xaml-модели 
V
    Опции темы
liri2006
Дата 16.9.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



С помощью 3dTools в проект загружается модель, теперь хочу прикрутить возможность обработки событий по клику на части этой самой модели. Нашел пример:

                <ModelUIElement3D MouseDown="Cube1MouseDown">
                    <ModelUIElement3D.Transform>
                        <TranslateTransform3D OffsetZ="1.5" />
                    </ModelUIElement3D.Transform>
                    
                    <ModelUIElement3D.Model>
                        <GeometryModel3D Geometry="{StaticResource CubeMesh}">
                            <GeometryModel3D.Material>
                                <DiffuseMaterial x:Name="cube1Material" Brush="Blue" />
                            </GeometryModel3D.Material>
                        </GeometryModel3D>
                    </ModelUIElement3D.Model>
                </ModelUIElement3D>
таким образом MeshGeometry3D разделяется на отдельные элементы, которыми сопсно и манипулируют. Загвоздка в том шо у них мэши прописани там же в коде, а у меня это загружается из файла, вот и вопрос: как засунуть в эту строчку <GeometryModel3D Geometry="{StaticResource CubeMesh}"> свои MeshGeometry3D?
PM MAIL   Вверх
zel25b
Дата 20.9.2010, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.2.2010

Репутация: нет
Всего: нет



У тебя в отдельном файле лежат модели в хамл коде?
Если так - то сначала десериализируй 3д модель в обьект, а потом уже этот обьект подключай к коду
PM MAIL   Вверх
liri2006
Дата 20.9.2010, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



да модели в XAML файле. А можна небольшой пример?
PM MAIL   Вверх
zel25b
Дата 21.9.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.2.2010

Репутация: нет
Всего: нет



Принцип таков:
Код

//Сереализируем модель
            List<Type> types = new List<Type>();  //Типы которые содержатся в ГеометриМодел3Д
            types.Add(typeof(MatrixTransform3D));
            types.Add(typeof(MeshGeometry3D));
            types.Add(typeof(MaterialGroup));
            types.Add(typeof(DiffuseMaterial));
            types.Add(typeof(ImageBrush));
            types.Add(typeof(SolidColorBrush));
            types.Add(typeof(MatrixTransform));
            System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(GeometryModel3D), types.ToArray());
            System.IO.TextWriter writer = new System.IO.StreamWriter(@"D:\1.xml");
            ser.Serialize(writer, (_trackport.Model as Model3DGroup).Children[1]);
            writer.Close();

//Десериализируем
            System.IO.TextReader reader = new System.IO.StreamReader(@"D:\1.xml");
            GeometryModel3D geo = (GeometryModel3D)ser.Deserialize(reader);
            reader.Close();

//Заменяем модель
            Model3DGroup model = new Model3DGroup();
            model.Children.Add(geo);
            _trackport.Model = model;


Можно не заменять модель, а добавить в старую модель новую геометрию.

Принцип таков, а если у тебя по другому хранится модель в файле - надо уже думать как ее десериализовать
PM MAIL   Вверх
liri2006
Дата 1.10.2010, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



Так, с этим разобрался, обошлось без сериализации\десериализации, но за помощь спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.