Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнить два лица. Сравнить два лица в разных ракурсах. 
:(
    Опции темы
galileopro
Дата 6.7.2009, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

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



Нужно сравнить 2 фотографии людей, и сделать вывод: одинаковые люди изображены или нет.
Вот ради примера 2 фотографии: 
user posted image
user posted image
Это одна и та же актриса. Нужно установить сходство программно.
Пока у меня получилось лишь выделить лицо по цвету (OpenGL под C#  и  Tao):
Код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tao.OpenGl;

namespace OpenGLDemo
{
    public partial class MainForm : Form
    {
        public const int size = 200;
        public byte[, ,] Bits = new byte[size, size, 3];
        public byte[, ,] Bits2 = new byte[size, size, 3];
        public MainForm()
        {
            InitializeComponent();
            openGlControl.InitializeContexts();
            Init();
            Resize(openGlControl.Width, openGlControl.Height);
        }

        private void MainForm_Paint(object sender, PaintEventArgs e)
        {
            Draw();
        }

        private static bool Init()
        {
            Gl.glShadeModel(Gl.GL_SMOOTH);
            Gl.glClearDepth(1.0f);
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LEQUAL);
            Gl.glEnable(Gl.GL_COLOR_MATERIAL);
            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_LIGHT0);
            Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
            return true;
        }
        private static void Resize(int width, int height)
        {
            if (height == 0) height = 1;
            Gl.glViewport(0, 0, width, height);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();

        }
        private byte abs(int r)
        {
            if (r < 0) r = -r;
 return Convert.ToByte(r);
        }
        private byte max(int r, int g, int b)
        {
            int m = r;
            if (g > m) m =g;
            if (b > m) m = b;
            return Convert.ToByte(m);
        }
        private byte min(int r, int g, int b)
        {
            int m = r;
            if (g < m) m = g;
            if (b < m) m = b;
            return Convert.ToByte(m);
        }
        private void Draw()
        {           
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);           
            Gl.glEnable(Gl.GL_TEXTURE_2D);
            Bitmap bitmap = new Bitmap("photo1.bmp");
            for (int i = 0; i <= size-1; i++)
                for (int j = 0; j <= size-1; j++)
                    {
                        Bits[i, j, 0] = bitmap.GetPixel(i, j).R;
                        Bits[i, j, 1] = bitmap.GetPixel(i, j).G;
                        Bits[i, j, 2] = bitmap.GetPixel(i, j).B;
                        Bits2[i, j, 0] = bitmap.GetPixel(i, j).R;
                        Bits2[i, j, 1] = bitmap.GetPixel(i, j).G;
                        Bits2[i, j, 2] = bitmap.GetPixel(i, j).B;
                    }

            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0,
                            Gl.GL_RGB, size, size, 0,
                            Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, @Bits);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

            Gl.glPushMatrix();
            Gl.glRotated(-90, 0, 0, 1);
            Gl.glBegin(Gl.GL_QUADS);

            Gl.glTexCoord2d(0.0, 1.0);
            Gl.glVertex2f(0.0f, 1.0f);

            Gl.glTexCoord2d(0.0f, 0.0f);
            Gl.glVertex2f(0.0f, 0.0f);

            Gl.glTexCoord2d(1.0, 0.0f);
            Gl.glVertex2f(1.0f, 0.0f);

            Gl.glTexCoord2d(1.0f, 1.0f);
            Gl.glVertex2f(1.0f, 1.0f);
            Gl.glEnd();
            Gl.glPopMatrix();

            for (int i = 0; i <= size - 1; i++)
                for (int j = 0; j <= size - 1; j++)
                {
byte r=bitmap.GetPixel(i, j).R;
byte g=bitmap.GetPixel(i, j).G;
byte b=bitmap.GetPixel(i, j).B;
if (!((r > g) && (r > b) && (b > 20) && (r > 95) && (b > 20) && (abs(r - g) > 15) && (max(r,g,b)-min(r,g,b) > 15))) 
{
    Bits2[i, j, 0] = 0;
    Bits2[i, j, 1] = 0;
    Bits2[i, j, 2] = 0;
}
                }

            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0,
                                        Gl.GL_RGB, size, size, 0,
                                        Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, @Bits2);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
            Gl.glPushMatrix();
            Gl.glRotated(-90, 0, 0, 1);
             Gl.glTranslated(-1, -1, 0);
            Gl.glBegin(Gl.GL_QUADS);

            Gl.glTexCoord2d(0.0, 1.0);
            Gl.glVertex2f(0.0f, 1.0f);

            Gl.glTexCoord2d(0.0f, 0.0f);
            Gl.glVertex2f(0.0f, 0.0f);

            Gl.glTexCoord2d(1.0, 0.0f);
            Gl.glVertex2f(1.0f, 0.0f);

            Gl.glTexCoord2d(1.0f, 1.0f);
            Gl.glVertex2f(1.0f, 1.0f);
            Gl.glEnd();
            Gl.glPopMatrix();
         Gl.glFlush();
        }

Вот скрин:
user posted image
Но теперь нужно изменить ракурс изображения, чтобы можно было сравнить со второй фотографией. Нужно как-то "развернуть" лицо в "фас". Как это сделать пока не знаю. Если кто может - подскажите.


Это сообщение отредактировал(а) galileopro - 6.7.2009, 01:18
PM MAIL WWW ICQ   Вверх
cardinal
Дата 6.7.2009, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



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


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
galileopro
Дата 6.7.2009, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

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



Одна вообще. Просто у меня кроме её портфолио больше нет на примете фотографий, чтобы ракурсы разные были. Если у кого есть, то дайте ссылку, я запущу программу с другими фотками и скину скрин.
PM MAIL WWW ICQ   Вверх
cardinal
Дата 6.7.2009, 01:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(galileopro @  5.7.2009,  22:50 Найти цитируемый пост)
Но теперь нужно изменить ракурс изображения, чтобы можно было сравнить со второй фотографией. 

Первая мысль: сделать голову объемной (исходя из теней), наложить текстуру и потом повернуть. Половина объекта будет без текстуры, но по крайней мере будет один ракурс...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
galileopro
Дата 6.7.2009, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

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



1) Как сделать её объемной исходя из теней сам щас пытаюсь понять. 
2) А как вычислять уголповорота? Я не могу никак определить базовые точки на лице, чтобы определить направление вектора нормали к плоскости лица.
Есть вот это http://www.iai.dn.ua/public/JournalAI_2004...Tukhtasinov.pdf
но там лицо в фас, а у меня нет, и поэтому гикстограмма яркости сильно искажена и по ней трудно определить линии глаз, нос, губы...

Это сообщение отредактировал(а) galileopro - 6.7.2009, 01:37
PM MAIL WWW ICQ   Вверх
NightmareZ
Дата 6.7.2009, 01:36 (ссылка)   | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Трындец. И здесь день эзотерики. Для тебя эта задача неразрешима. Можешь закрывать тему.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
galileopro
Дата 6.7.2009, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

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



Цитата(NightmareZ @  6.7.2009,  01:36 Найти цитируемый пост)
Трындец. И здесь день эзотерики. Для тебя эта задача неразрешима. Можешь закрывать тему.

Разрешима. А вообще: нехочешь помогать - не помогай.
PM MAIL WWW ICQ   Вверх
Bitter
Дата 6.7.2009, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

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



NightmareZ, а для тебя разрешима?
PM MAIL ICQ Skype   Вверх
Dims
Дата 6.7.2009, 17:29 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

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



Насколько я знаю, эта задача вообще пока что неразрешима. 

Есть методы, например, путём вычисления собственных значений (алгоритм eigenfaces). Есть и другие. Но, думаю, все эти методы (1) позволяют лишь сравнивать лица в одном ракурсе и (2) требуют обучения программы.

В Вашем случае, будут две большие проблемы:

1) нужно восстановить 3-мерную модель лица; для этого нужно найти источник света, вычислить наклон поверхностей, учесть макияж и т.п.

Эта задача будет сложна сама по себе, потому что данных наверняка недостаточно. То есть, алгоритм тоже должен быть обучаемый и после обучения он должен "знать" о том, что такое лицо в принципе, чтобы делать правильные предположения о том, как идёт 3d поверхность в неясных случаях.

2) Нужно сравнить две 3-мерные модели

Это тоже будет сложная задача, потому что модели не будут одинаковыми. Во-первых, из-за ошибок и искажений, возникших на предыдущем этапе, во-вторых, из-за того, что любое лицо немного меняется естественным образом и, наконец, из-за несоответствия масштабов.

То есть, алгоритм тоже должен будет много знать, чтобы правильно отделить важные отличия от второстепенных.
PM MAIL   Вверх
Pavia
Дата 6.7.2009, 19:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Поповуду сравнения. Считается чтобы точно сравнить надо вычислить растояния между глазами носом и ртом.
Но в твоем случии придется еще востанавливать 3D.

1) Выделить овал лица.  Тут  предлогаю применить выделение границ. Советую найти реализацию Canny. В OpenCV уже есть.
Хотя тут можно и ручками сделать. Просто локальный максимум.

2) Предлогаю сделать так. При помоще градиента вычисляем наклон и высоту пикселей.  Это даст примерную 3D модель.

отдаю свою идею. 

Корреляция с обратной связью. 

Суть в том задем начальное приблежение. Ввиде поворотной матрицы. Примерно совподали лица после поворота. После считаем корреляцию. Пробуем поворачивать на некотоый угол alfa + и - смотрим где корреляция больше если +alfa  то прибовляем Если корреляция больше при в данной позиции в 0.  Пробуем поворачивать по другой оси beta. Если и в этом случии максимум при 0 то уменьшаем alfa и beta в неско раз к примеру в 2. 

И так до тех пор пока alfa и  beta не станут очень маленькими. 

Поповоду соовмещения по координатам, то корреляцию считать не как коэфициент, а как функцию.  Думаю будет точнее. Хотя можно поступить по аналогии с глами.

Для ускорения рассчета корреляции можно брать не все точки. 

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


PM MAIL   Вверх
galileopro
Дата 6.7.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

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



Ясно. Я это и пытаюсь сделать, а именно: построить 2 3-х мерные модели лица. Уже кое что получилось. Выложу скоро код и скрин.
Цитата(Pavia @  6.7.2009,  19:12 Найти цитируемый пост)
При помоще градиента вычисляем наклон и высоту пикселей.  Это даст примерную 3D модель.

Как раз так я и начал строить. Ты не обижайся, просто нечто похожее я накопал в Интернете. Проблема возникает с шумами, с тем, что изображение иногда подвергают изменениям, после фотографирования (серпия, визуальные эффекты, это все дает большие погрешности).
Вообще уже кой чего получилось, но модели очень непохожи за счет случайных факторов.
Если лицо в "фас" то 3D модель построить легче. А вот если повернуто, то может кто-то знает, как направить свет в фас, а не так как на фотографии. Я по теням вычислил вектор источника светпа, и он направлен сбоку, а это влечет большие трудности.
Задача:
Переделать user posted image
так, чтобы свет был в лицо актрисе направлен, а не произвольно. Надо позарез.

Это сообщение отредактировал(а) galileopro - 6.7.2009, 20:02
PM MAIL WWW ICQ   Вверх
cardinal
Дата 6.7.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(galileopro @  6.7.2009,  17:14 Найти цитируемый пост)
Вообще уже кой чего получилось, но модели очень непохожи за счет случайных факторов.

Я думаю, что погрешность будет все равно очень большая. Но она и в жизни такая же (метод: на глаз)...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
galileopro
Дата 6.7.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

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



Придумал:
Надо сначала "отключить" старый источник света, то есть яркость равнораспределить(получится какое-то полутоновое изображение), а потом с помощью OpenGL вроде можно установить новій источник света(по направлени лица, а для єтого енужно вічислить расположение глаз и носа, через 3 точки проводим 2 вектора, и их векторное пр-е - єто направляющий вектор лица(он перпендикулярен плоскости лица). Только как устанавливается источник света в OpenGl - это еще мне надо изучать.
Ах да , а потом делаем GetPixels() и вуаля, вот новая фотка, а свет уже в фас.

Дело в том, что я хочу по яркости пикселей постороить саму модель. Ведь выпуклые части лица при свете в фас осветятся наилучшим образом, а вогнутые плохо, и тогда яркость пиксела - это характеристика его местоположения в 3D модели

Это сообщение отредактировал(а) galileopro - 6.7.2009, 20:15
PM MAIL WWW ICQ   Вверх
cardinal
Дата 6.7.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(galileopro @  6.7.2009,  18:08 Найти цитируемый пост)
и тогда яркость пиксела - это характеристика его местоположения в 3D модели

но как уже сказали есть нюансы...
Цитата(Dims @  6.7.2009,  15:29 Найти цитируемый пост)
учесть макияж




--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
galileopro
Дата 7.7.2009, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

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



Вот все думаю, поможет ли моя идея направить свет в "фас". Пока я попробовал просто построить 3D по яркости пикселов и получилось вот єто:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tao.OpenGl;

namespace OpenGLDemo
{
    public partial class MainForm : Form
    {
        public const int size = 200;
        public byte[, ,] Bits = new byte[size, size, 3];
        public byte[, ,] Bits2 = new byte[size, size, 3];
        public bool[,] flag = new bool[2,1];
        Bitmap bitmap = new Bitmap("photo1.bmp");
        public MainForm()
        {
            InitializeComponent();
            openGlControl.InitializeContexts();
            Init();
            Resize(openGlControl.Width, openGlControl.Height);
        }

        private void MainForm_Paint(object sender, PaintEventArgs e)
        {
            Draw();
        }

        private static bool Init()
        {
            Gl.glShadeModel(Gl.GL_SMOOTH);
            Gl.glClearDepth(1.0f);
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LEQUAL);
            Gl.glEnable(Gl.GL_COLOR_MATERIAL);
            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_LIGHT0);
            Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
            return true;
        }
        private static void Resize(int width, int height)
        {
            if (height == 0) height = 1;
            Gl.glViewport(0, 0, width, height);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();

        }
        private void Koga(Bitmap bitmap)
        {

            for (int i = 0; i <= size - 1; i++)
                for (int j = 0; j <= size - 1; j++)
                {
                    //R > 95 и G > 40 и B > 20 и max(R,G,B)-min(R,G,B) > 15 и |R - G| > 15 и R > G и R > B.
                    byte r = bitmap.GetPixel(i, j).R;
                    byte g = bitmap.GetPixel(i, j).G;
                    byte b = bitmap.GetPixel(i, j).B;
                    if (!((r > g) && (r > b) && (b > 20) && (r > 95) && (b > 20) && (abs(r - g) > 15) && (max(r, g, b) - min(r, g, b) > 15)))
                    {
                        Bits[i, j, 0] = 0;
                        Bits[i, j, 1] = 0;
                        Bits[i, j, 2] = 0;
                    }

                }
        }
        private byte abs(int r)
        {
            if (r < 0) r = -r;
 return Convert.ToByte(r);
        }
        private double absd(double d)
        {
            if (d < 0) d = -d;
            return d;
        }
        private byte max(int r, int g, int b)
        {
            int m = r;
            if (g > m) m =g;
            if (b > m) m = b;
            return Convert.ToByte(m);
        }
        private byte min(int r, int g, int b)
        {
            int m = r;
            if (g < m) m = g;
            if (b < m) m = b;
            return Convert.ToByte(m);
        }                                         
        }
        private void Draw()
        {           
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
               Gl.glEnable(Gl.GL_TEXTURE_2D);
                
                for (int i = 0; i <= size-1; i++)
                    for (int j = 0; j <= size-1; j++)
                        {
                            Bits[i, j, 0] = bitmap.GetPixel(i, j).R;
                            Bits[i, j, 1] = bitmap.GetPixel(i, j).G;
                            Bits[i, j, 2] = bitmap.GetPixel(i, j).B;

                         
                            Bits2[i, j, 0] = bitmap.GetPixel(i, j).R;
                            Bits2[i, j, 1] = bitmap.GetPixel(i, j).G;
                            Bits2[i, j, 2] = bitmap.GetPixel(i, j).B;

                        }

                Koga(bitmap);
                             
    for (int i = 0; i < 199; i++)
        for (int j = 0; j < 199; j++)
    {
Gl.glPushMatrix();
Gl.glColor3d(Convert.ToDouble(Bits[i, j, 0])/50, Convert.ToDouble(Bits[i, j, 1])/50, Convert.ToDouble(Bits[i, j, 2])/50);
Gl.glTranslated(Convert.ToDouble(i) / 200, 1 - Convert.ToDouble(j) / 200, Convert.ToDouble(0.3*Bits[i, j, 0] + 0.59*Bits[i, j, 1] + 0.11*Bits[i, j, 2]) / 255);
Glu.GLUquadric q = Glu.gluNewQuadric();
Glu.gluSphere(q,0.01, 5, 5);
Glu.gluDeleteQuadric(q);
Gl.glPopMatrix();    
    }

Gl.glFlush();
        }


        private void button1_Click_1(object sender, EventArgs e)
        {
Gl.glRotated(90, 0, 1, 0);
Draw();
openGlControl.Refresh();
        }
    }  
}

user posted image
user posted image
Жуткий бред. Можно попытаться смоделировать полигонами. Может будет лучше, но вообще что-то плохо.
Сделал процедуру для выравнивания яркости вот теперь думаю, если выровнять яркость, потом расположить прямо перед лицом её источник света, то модель улучшится? Судя по предварительному результату - неясно.

Это сообщение отредактировал(а) galileopro - 7.7.2009, 10:31
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




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


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

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