Первым делом я уменьшил размер картины (Интернет все-таки). Без фанатизма. Что бы был разумный баланс между размером и качеством. Это можно обсудить позже. Я брал картину с сайта
http://art-on-line.com.ua/. На этом сайте даны размеры картин, поэтому ничего не надо угадывать. В частности у этой 120см х 80см (
1,2м х 0,8м). Возможно, понадобиться не значительная доработка в фотошопе. Но думаю это уже по согласованию с автором. А то я лично многие «шедевры» просто переделал бы. Теперь о носителе картины. Я пробовал цеплять просто на
IndexedFaceSet, а потом на стенку, но смотрится это как нарисованное на стенке. Пробовал засунуть в рамку, но сама рамка должна соответствовать картине, а это оказалось для меня трудным делом. Я остановился на параллелепипеде (каркас), на который прилеплена картина. Ты, как дизайнер, находи свое решение. В конце концов, картину можно прилепить на конус и сказать «это мое видение»

или «дизайнера всякий может обидеть»

. Так вот в точке с координатами
(0,0,0) строим

Box черного или темно-коричневого цвета с размерами по ширине и высоте на 0,01м больше размера самой картины. И толщиной 0,02м (2см).
Transform {
translation 0 0 0 children [
Shape {
appearance Appearance {
material Material {
diffuseColor .09 .03 0
specularColor .22 .1 .1
ambientIntensity .01
shininess .05
}
}
geometry
Box {size 1.21 .81 .02} }
]
}
Теперь сама картина.
Transform {
translation
0 0 .011 children [
Shape {
geometry
IndexedFaceSet {
solid FALSE
coord Coordinate { point [
-0.6 -0.4 0, 0.6 -0.4 0, 0.6 0.4 0, -0.6 0.4 0]
}
texCoord TextureCoordinate { point [
0 0, 1 0, 1 1, 0 1]
}
coordIndex [
0 1 2 3 -1]
texCoordIndex [
0 1 2 3 -1]
}
appearance Appearance {
material Material {
emissiveColor 1 1 1
diffuseColor 0 0 0
}
texture ImageTexture {
url "твоя картина.jpg"
}
}
}
]
}
Поясняю. В начальный момент времени полотно картины, как и каркас картины, находится в точке с координатами
(0,0,0). Если это сооружение повесить в зале, то посетитель (сто бочек ему на голову

) будет видеть только каркас. Что бы картина проявилась, необходимо ее выдвинуть на передний план. На расстояние чуть большее, чем половина толщины картины. В нашем случае при толщине каркаса 0,02м это будет 0,011м. Другими словами полотно картины будет на расстоянии 0,001м от поверхности каркаса. Этим выдвижением занимается
Transform {
translation 0 0 .011 children [
Теперь объединим картину с каркасом в один узел. Определяющим будет узел каркаса. Это значит что в узел каркаса с координатами
пока (0,0,0), а именно в его поле
children (потомки, дети) включим узел описывающий картину. Что бы было лучше видно, что куда включено, прилеплю картинку

- что куда вставлено
Осталось это сооружение повесить. Для простоты, возьмем стенку параллельную оси
X и которая лицом направлена по оси
Z (иначе придется все это вращать, а этого мы, по-моему, не проходили). Опять нужна картинка для ясности.

- выбор места для картины
Подходящую стенку я отметил красным крестиком. Как видно из рисунка стенка находится на расстоянии по
Z 3м от центра (т.О с координатами (0,0,0)) в сторону
отрицательных значений и
2м до начала стенки по оси
X в сторону
положительных значений. По высоте (координата
Y) возьмем значение
1,7м к примеру. Что касается координаты по
Z, то нужно учесть следующее. Толщина стенки
0,2м, следовательно координата размещения по
Z должна быть уменьшена на
0,1м. Затем минус половины толщины каркаса --
0,01м ну и небольшой отступ от стенки. Это еще минус
0,01м. Теперь разместим
вдоль стенки на расстоянии
1м от начала стенки (в данном случае начало находится слева).
2м по оси
X от оси
Z плюс
1м уже от края стенки. Итого
3м. Теперь в узле каркаса все вместе
Transform {
translation 3 1.7 -2.88 children [
Я опять наверное круто взнуздал. Пиши вопросы. По частям все решим. Картину я повесил. Ее полный адрес:
http://art-on-line.com.ua/index.php?pag ... &Itemid=35(в одну строчку не поместился).
Это одно и то же но совершенно разные вещи. Не веришь? Смотри тут: www.3dg.com.ua