Название: Шарик Отправлено: Igors от Декабрь 22, 2014, 09:49 Добрый день
Нужен просто шарик - но бросаться в пучину OpenGL совсем не хочется. А там еще мутные шейдера пойдут - вообще ховайся :'( Я конечно понимаю что будет более сложный объект - и OpenGL неизбежен. Но сейчас мне нужен всего лишь шарик, ничего более. Отделаться сохраненными картинками не удается. Как же мне нарисовать шарик простыми средствами QPainter? Спасибо Название: Re: Шарик Отправлено: __Heaven__ от Декабрь 22, 2014, 10:05 У меня есть один на шейдерах. Код немного кривой - генерировал сам на треугольниках. Если заинтересует, то могу дать. Кстати, мой шарик не принимает нормали, а высчитывает их прямо в шейдере.
Название: Re: Шарик Отправлено: __Heaven__ от Декабрь 22, 2014, 10:10 вот
Название: Re: Шарик Отправлено: Johnik от Декабрь 22, 2014, 10:16 Делал так:
Код: QPixmap createSphere(uchar diameter, const QColor& color) const Название: Re: Шарик Отправлено: Igors от Декабрь 22, 2014, 10:44 У меня есть один на шейдерах. Код немного кривой - генерировал сам на треугольниках. Если заинтересует, то могу дать. Кстати, мой шарик не принимает нормали, а высчитывает их прямо в шейдере. Понятно что с OpenGL это просто. Но, повторюсь, тащить эту бандуру, а тем более шейдеры, не вызывает энтузиазма. И потом - Вам не кажется это неестественным? Исходных данных у шарика аж 2: центр и радиус. А мы зачем-то создаем не одну сотню треугольников. Разве это правильно?Делал так: С исходным белым цветом все залито, а с др впечатление что шарик сам светится (аттач). Но понимаю что критиковать легче чем делать, спасибо за код.Название: Re: Шарик Отправлено: Johnik от Декабрь 22, 2014, 10:55 С исходным белым цветом все залито, а с др впечатление что шарик сам светится (аттач). Но понимаю что критиковать легче чем делать, спасибо за код. мне проще было, у меня шарик 16х16.Можно попробовать изменить параметры градиента. Название: Re: Шарик Отправлено: __Heaven__ от Декабрь 22, 2014, 10:55 А мы зачем-то создаем не одну сотню треугольников. Разве это правильно? Тесселяция в помощь! :) Шучу.Визуально на вашем скриншоте затемнения просто не хватает в правом нижнем углу. Можно подстроить градиент, чтобы переходил в бордовый. Название: Re: Шарик Отправлено: Igors от Декабрь 22, 2014, 15:04 Можно подстроить градиент, чтобы переходил в бордовый. Люди ждут на светофоре перехода, горит красный, но машин нет. Но вот стоило одному пойти - и все потянулись за ним. Никогда не замечали? :) Градиент - нормальное решение, дешевое, практичное. Но это fake, т.е. "есть какое-то сходство" - но не более того. Думаю что если начать развивать/углублять этот fake - ничего доброго не выйдет, получится "система рычагов", др словами большой уродливый велосипед. А нет ли другого (принципиально другого) решения? Название: Re: Шарик Отправлено: Bepec от Декабрь 22, 2014, 15:18 Всё что вы рисуете Opengl/painter'ом и прочими инструментами суть есть обман зрения, не более. И всё равно оно приводится к двумерной картинке.
Потому и ваш шарик и шарик на Qt одинаково правдивы, Правда в кутешном градиент подобрать чуть лучше надо. Название: Re: Шарик Отправлено: __Heaven__ от Декабрь 22, 2014, 15:20 Люди ждут на светофоре перехода, горит красный, но машин нет. Но вот стоило одному пойти - и все потянулись за ним. Никогда не замечали? :) Не, обычно я иду на красный первым и не оборачиваюсь :)Я имел в виду, что нужно подкрасить ваш существующий градиент. Кажется, что вы слишком много хотите получить, точнее накостылить... И чего вы так с OpenGL не в ладах.... ваш шарик и шарик на Qt одинаково правдивы, Правда в кутешном градиент подобрать чуть лучше надо. Присоединяюсь. Ваш шарик тоже имеет острые края - значит fakeНазвание: Re: Шарик Отправлено: Igors от Декабрь 22, 2014, 16:57 Всё что вы рисуете Opengl/painter'ом и прочими инструментами суть есть обман зрения, не более. И всё равно оно приводится к двумерной картинке. А разве в реальной Вы каким-то образом можете видеть "не-двумерную"? :) Вряд ли т.к. человеческий глаз - та же камера, никаких принципиальных отличий нет.И чего вы так с OpenGL не в ладах.... Возможно Вы хотели спросить почему я его не люблю. Потому что там убогость выдается за вершину инженерной мысли. В принципе это нормально, компаниям надо продать свои железки - но нельзя же верить всему на слово Не, обычно я иду на красный первым и не оборачиваюсь :) В данном случае Вы послушно идете за предложенным Johnik решением, без всяких попыток предложить свое. А между тем альтернатива довольно очевидна :)Я имел в виду, что нужно подкрасить ваш существующий градиент. Название: Re: Шарик Отправлено: __Heaven__ от Декабрь 22, 2014, 17:10 Да, не обратил внимания на предложенный Johnik вариант (видимо, концентрировался на своих мыслях :) )
Не забывайте, что у человека две "камеры" составляют картинку и полностью обмануть этот механизм плоскостью с картинкой вряд ли удастся. Ну, убогость - это громко. Чтож этой убогостью пользуются миллионы? Какие альтернативы можете назвать? В крайнем случае можно достигнуть своей вершины инженерной мысли ;) Название: Re: Шарик Отправлено: Bepec от Декабрь 22, 2014, 18:10 У человека имеются 2 камеры, которые позволяют снять карту глубин (не помню точно как называется, но суть у человека имеется 2 картинки по которым он может составить трёхмерную модель :D ).
А изображение на экране даёт лишь 2 картинки без глубины :) Opengl просто позволяет рассчитать и нарисовать картинку с нужными градиентами. Название: Re: Шарик Отправлено: Igors от Декабрь 22, 2014, 18:31 У человека имеются 2 камеры, которые позволяют снять карту глубин (не помню точно как называется, но суть у человека имеется 2 картинки по которым он может составить трёхмерную модель :D ). Называется стереоскопия (хотя говорят и по-простому "стерео"). Не вдаваясь в детали - этот эффект имеет какое-то значение на достаточно близком расстоянии. Закройте один глаз и посмотрите другим на девушку с расстояния хотя бы 10 метров. Потом посмотрите другим - визуально ножки и все остальное то же самое :)Ну, убогость - это громко. Чтож этой убогостью пользуются миллионы? Какие альтернативы можете назвать? В крайнем случае можно достигнуть своей вершины инженерной мысли ;) То есть альтернативы великому и могучему OpenGL нет - и быть не может! Даже в случае простейшего шарика - мы должны либо довольствоваться подделкой градиентами - либо запрягать по полной программе. Правильно?Цитировать Стало быть так-таки и нету? :)Название: Re: Шарик Отправлено: Bepec от Декабрь 22, 2014, 19:12 Любая поделка будет работать с градиентами :D Ибо все технологии подстраиваются под глаза. А наши глаза верят градиентам :) Давным давно была статейка о наших глазах. И приведены были "обманы" мозга для создания трехмерности) Там всего около 5-7 способов, причем наипростейший это градиенты.
Название: Re: Шарик Отправлено: Igors от Декабрь 22, 2014, 19:17 Любая поделка будет работать с градиентами :D Ибо все технологии подстраиваются под глаза. А наши глаза верят градиентам :) Давным давно была статейка о наших глазах. И приведены были "обманы" мозга для создания трехмерности) Там всего около 5-7 способов, причем наипростейший это градиенты. А зачем кого-то обманывать если можно просто посчитать как оно есть? :)Название: Re: Шарик Отправлено: Bepec от Декабрь 22, 2014, 20:03 Вы в любом случае на выходе получаете фейковую картинку с градиентами, пусть и часто обновляемую.
Разница тут в том, что в opengl расчёты происходят автоматом. Название: Re: Шарик Отправлено: Igors от Декабрь 23, 2014, 12:46 Ну а почему бы нам не отрендерить сферу, т.е. повторить то что делает OpenGL? В конце-концов что же такого великого он делает? Или, как говорят в боевиках,
Цитировать Даже не думай об этом!! :) :)Название: Re: Шарик Отправлено: Пантер от Декабрь 23, 2014, 12:50 Обычно так и рождаются свои велосипеды. :)
|