3d форум по Blender

Другое => Программирование (любое) => Тема начата: -andrey- от 01 Ноябрь 2016, 23:52:44

Название: Написание скриптов.
Отправлено: -andrey- от 01 Ноябрь 2016, 23:52:44
  Начал читать книгу, вообще не совсем понятно:
вот на рисунке представление данных о кубе, собственно рисунок вообще не понятный - нет иерархии деталей меша, стало быть выбрав любую деталь - будь то вершина, грань, ребро, можно узнать её составляющие или наоборот - частью чего она является.
и непонятно то, что меш создаётся не через указания координат вершин, а через указание углов, что на первый взгляд (второго пока не приобрёл) не только усложняет задачу, но и ставит под сомнение точность меша (всё равно будут допуски при расчётах углов, видимо так и появляются иногда неизвестно от куда откланения в десятитысячные доли единиц отсчёта по осям координат).
Вот пример создания куба из книги
from Blender import Mesh,Scene
corners=[ (-1,-1,-1), (1,-1,-1), (1,1,-1), (-1,1,-1),
 (-1,-1, 1), (1,-1, 1), (1,1, 1), (-1,1,1) ]
sides= [ (0,1,2,3), (4,5,6,7), (0,1,5,4), (1,2,6,5),
 (2,3,7,6), (3,0,4,7) ]
me = Mesh.New('Cube')
me.verts.extend(corners)
me.faces.extend(sides)
scn = Scene.GetCurrent()
ob = scn.objects.new(me, 'Cube')
Поясните пожалуйста, по мне проще вбивать координаты, на начальном этапе, а вообще всё зависит от выполняемой задачи - что за меш редактируется.
Название: Re: Написание скриптов.
Отправлено: -andrey- от 01 Ноябрь 2016, 23:59:52
Хотя, прошу прощения, кажется мне просто не хватает терпения и просто нужно читать дальше, но от подсказки не откажусь, так книги действительно пишут путано, о чём в них и говорят, точнее в переводах.
Название: Re: Написание скриптов.
Отправлено: sungreen от 02 Ноябрь 2016, 02:22:30
>> кажется мне просто не хватает терпения и просто нужно читать дальше
... это правильное направление, по ходу ещё заглядывай в blender api и понимание кода будет более полное ...

>> меш создаётся не через указания координат вершин, а через указание углов
... ты сам привёл пример где это не так! ...
... если что, то вот ещё пример http://blender-3d.ru/forum/index.php/topic,327.msg11052.html#msg11052 ...
Название: Re: Написание скриптов.
Отправлено: -andrey- от 02 Ноябрь 2016, 20:34:19
Блин да это перевод такой, там написано углы, а не их позиции. Только сейчас понял в чём разгадка. Я ещё думал как так может быть
Цитировать
Мы начинаем с определения списка углов. Каждый из восьми углов представлен кортежем трех чисел - это координаты x, y, и z.
что угол описывается тремя координатами. И вроде не баран, даже спор на киберфорум выигрывал, у кодера с образованием, на предмет абстрактного мышления. Реально он проспорил - он описал абстрактное мышление по системе по которой их учили, я взял пол-года на ответ и выиграл спор.
Вот это сбило с толку и был поздний вечер уже
Цитировать
Важно получить эти индексы в правильном порядке: если мы захотим указать первую сторону как (0,1,3,2), мы получим грань, искривленную, как галстук-бабочка.
Теперь-то всё понятно, помогло замечание того, что я сам привел пример где это не так, sungreen, спасибо, от души :). Если-бы я просто читал дальше - я бы вообще ничего не понял-бы, а только дальше запутывался.
Название: Re: Написание скриптов.
Отправлено: LanuHum от 02 Ноябрь 2016, 21:41:41
Блин да это перевод такой, там написано углы, а не их позиции. Только сейчас понял в чём разгадка. Я ещё думал как так может быть
Иди вот сюда:
http://striver00.ru/
Там есть вот это:
Примеры кода. Введение в написание скриптов на Python для Blender 2.5x. Striver переводит отлично, непонятно только для кого, если тут сидят и загадки разгадывают. :o
Название: Re: Написание скриптов.
Отправлено: Striver от 02 Ноябрь 2016, 23:39:17
Не знаю, что за книга обсуждается, но попытаюсь вступиться за автора...
Если бы была какая-нибудь сложная конструкция, то вряд-ли бы её вершины назвали "углами", но вот применительно к кубу это вполне обычное понятие: "Вот куб, у него 8 углов", так же как "Вот квадрат, у него 4 угла". Конечно, это может добавить дополнительной путаницы, но вина автора гораздо меньше, чем у тех, кто называет рёбра словом "грани" (а такие на русскоязычных форумах по Блендеру, в том числе и на этом, появляются с отвратительной регулярностью).
Название: Re: Написание скриптов.
Отправлено: LanuHum от 03 Ноябрь 2016, 15:45:54
Не знаю, что за книга обсуждается, но попытаюсь вступиться за автора...
Если бы была какая-нибудь сложная конструкция, то вряд-ли бы её вершины назвали "углами", но вот применительно к кубу это вполне обычное понятие: "Вот куб, у него 8 углов", так же как "Вот квадрат, у него 4 угла". Конечно, это может добавить дополнительной путаницы, но вина автора гораздо меньше, чем у тех, кто называет рёбра словом "грани" (а такие на русскоязычных форумах по Блендеру, в том числе и на этом, появляются с отвратительной регулярностью).
При желании заблудиться можно и в трёх соснах.
У́гол — геометрическая фигура, образованная двумя лучами (сторонами угла), выходящими из одной точки (которая называется вершиной угла)
Измеряется в градусах, радианах. Таких уголов у куба 24.

Чем измеряются те углы, которых у куба всего 8?
Теле́сный у́гол — часть пространства, которая является объединением всех лучей, выходящих из данной точки (вершины угла) и пересекающих некоторую поверхность (которая называется поверхностью, стягивающей данный телесный угол). Частными случаями телесного угла являются трёхгранные и многогранные углы. Границей телесного угла является некоторая коническая поверхность. Обозначается телесный угол обычно буквой Ω.

Не думаю, что создавая меш уместно говорить о телесных углах...дабы не запутывать обучающегося. :)
Ну, а про грани хорошо знают только ювелиры. Я, чтобы не вносить путаницу не употребляю слова "грань". Есть уже укоренившееся в графике слово полигон, которое чётко заменяет скользкое понятие грань.
Название: Re: Написание скриптов.
Отправлено: Striver от 03 Ноябрь 2016, 16:50:20
Цитировать
чётко заменяет скользкое понятие грань.
Ничего скользкого, это слово из школьного учебника стереометрии.
Название: Re: Написание скриптов.
Отправлено: LanuHum от 03 Ноябрь 2016, 17:51:11
Цитировать
чётко заменяет скользкое понятие грань.
Ничего скользкого, это слово из школьного учебника стереометрии.
Я не пытаюсь спорить, просто, русский язык очень богат синонимами, сбивающими с толку. Типа, ребро монеты.
В любом случае, меш в Блендере строится по списку вершин с указанием поверхностей, ограниченных группой вершин списка. Никаких углов там не считается и не указывается. Ни плоских, ни круглых, ни сиреневеньких. :)
Название: Re: Написание скриптов.
Отправлено: Samovar от 03 Ноябрь 2016, 17:59:27
LanuHum,  есть такая точная древняя наука-геометрия и там есть  русская терминология, отличная от языка обывателей :)
Чтобы собеседник точно понимал о чём речь, надо именно её и использовать... а то, что Striver написал про 8 углов куба - это было как пример языка обыденного, а не научного... думаю, он именно об этом хотел сказать.
Название: Re: Написание скриптов.
Отправлено: LanuHum от 03 Ноябрь 2016, 18:56:43
LanuHum,  есть такая точная древняя наука-геометрия и там есть  русская терминология, отличная от языка обывателей :)
Чтобы собеседник точно понимал о чём речь, надо именно её и использовать... а то, что Striver написал про 8 углов куба - это было как пример языка обыденного, а не научного... думаю, он именно об этом хотел сказать.
Я не пытаюсь спорить, просто, многие учебники не стоят того, чтобы их открывали, не говоря уже о чтении. Поэтому, я посоветовал перевод Striver-a :)
Но, если вы желаете, чтоб я пофлудил, то я могу. :)
Я вот изучаю С++ и вижу, что учат создавать заголовочные файлы, файлы .cpp, а сами любой пример пишут в одном файле. Пишут, что класс не является объектом, объект создаётся с помощью new, а у самих в коде этого самого new днём с огнём не сыскать. Использование cmake представляют создав проект из одного файла с одной единственной строчкой int main (){}. На хрена мне смаке для компиляции пустой функции?
В 99% примеров рендереров - рендер шариков и кубиков.
Я это к тому, что не нужно приставать к кубикам и шарикам, считая, сколько у них углов. Учите ученика с первого урока создавать тор. Вам не придёт в голову говорить в этом случае про углы на китайском, китайцы правильно сделают перевод вашего урока и китайский ученик не будет искать у тора углы. :)
Название: Re: Написание скриптов.
Отправлено: -andrey- от 06 Ноябрь 2016, 15:15:02
дело такое, нужно наверное допилить свой редактор http://www.cyberforum.ru/blogs/223907/blog4462.html, потому что программу для конспектов я не нашёл фряшную, по python для Lazarus мне пока ничего не подсказывают, да и думаю что не надо делать снова костыль, а сделать его из своей программы, там в блоге ссылка на прогу.
Редактор работает так:
создается файл, вводится мерность массива, открывается таблица, если поставить галочку - вводя целые числа мы вводим размерность ветки массива, если галочку убираем - просто сёрфим по массиву. Массив сохраняется и загружается, только при загрузке вводится имя проекта, которое было дано при сохранении. Пришёл к тому, что нужно писать свои скрипты для Blender 3D, ну а в общем это работа такая - не разовая, а конспекты писать - вижу не рациональным, значит нужно обвесить этот редактор и сделать с него одновременно и прогу для конспектов и прогу составляющую код.
Ну и думаю допилить его таким образом:
В ощем думаю прикрутить к нему такую фишку, чтобы в таблице выводились рисунки, хранимые в другом массиве, и использовать эту фишку для составления кода посредством нажатий на нужной странице таблиц. В таблице сделать кнопки с изображениями.
Название: Re: Написание скриптов.
Отправлено: -andrey- от 06 Ноябрь 2016, 15:19:38
Не знаю сколько уйдёт времени - так-то не много, ну допустим по вечерам недели на 2-е прийдётся забросить работу над БПЛА(а сделано не мало так-то, даже в аэродинамической трубе фряшной продувал 3D модель заготовку с размерами и профилями, расчёты движков по своей системе, правда не под импеллер а под двухлопастной винт), но зато получить редактор для вставок шаблонов кода в поле редактирования текста. А и наче никак- при работе с несколькими языками я боюсь, что начну путаться и забывать то одно то другое, основная специальность у меня - сварщик, а не кодер, такие дела вот. К тому-же, для работы с Blender мне прийдётся написать не один аддон, для создания БПЛА своего (для выставки - трансформер), а значит нужно освоить будет не мало информации, значит редактор свой допиливать надо - однозначно. Потратив 2-е недели на допил редактора массивов до редактора кода, я выиграю во всех отношениях по времени - тут деваться некуда, математика элементарная.
Название: Re: Написание скриптов.
Отправлено: LanuHum от 06 Ноябрь 2016, 16:22:49
Цитировать
там в блоге ссылка на прогу.
Не качается прога, если не зарегистрирован на том форуме.
Пытаюсь понять, что ты изобретаешь? Какой-то редактор конспектов... где-то кликаешь по картинке... аддон для Блендера
Название: Re: Написание скриптов.
Отправлено: -andrey- от 08 Ноябрь 2016, 21:49:46
Ничего я там не изобретаю, просто программу надо дописать, ну не качается... да и не нужна она в таком виде, доделаю скину линк. Видимо надо снова комплекс витаминов+минералов купить, с едой что я сам себе готовлю далеко не уедешь, а может просто устал, помимо работы основной, за 3 месяца, я не мало работы по вечерам сделал. Смысл такой хочу - кликаешь в гриде на картинку (она-же кнопка), TMemory выводится текст, а справа или слева схемы, изображения. Так-то ничего сложного - грид уже работает как надо, массив сохраняется, немного допилить и получится полезная прога. Просто без костыля мне сложно скрипты будет писать - забывать буду и прочее, постоянно код не пишешь - бывает алгоритм разрабатываешь, способ ищёшь, да и дела всякие бывают, поэтому костыль надо для той инфы, которую используешь не постоянно.
Название: Re: Написание скриптов.
Отправлено: -andrey- от 10 Ноябрь 2016, 23:33:33
Понял как будет называться аддон булевый - правильно: усечение движением монолитного объекта, только это  - не усечение монолитного объекта движением. Монолитный объект в моём понятии - объект, внутри которого нет замкнутых полостей. А вот БПЛА, который я планирую изготовить, но параллельно прийдётся таки писать аддоны, программу справочника с быстрой навигацией, и как-то делать БПЛА. Ну в принципе тоже не плохо, сначало выглядит как-то отталкивающе - сразу всё, но в принципе понемногу всё и сделаю.
Руль снизу, сверху импеллер на поворотном мехнизме и сопатками создающими вращающий момент- так как не будет элеронов, на руле и заднее шасси будет. Ещё руль снизу будет создавать нужный вращающий момент такой, чтобы можно было выполнять повороты без элеронов и без помощи импеллера. Просто лопатки импеллера, направляющие поток на выходе, нужны ещё будут в режиме коптера - наклонить коптер вперёд или назад. Профиль фезюляжа такой не для красивости - не вмещались по расчётам контроллеры и аккумулятор - пришлось расширить нижнюю часть фезюляжа.
Название: Re: Написание скриптов.
Отправлено: -andrey- от 10 Ноябрь 2016, 23:43:05
Цитировать
там в блоге ссылка на прогу.
Не качается прога, если не зарегистрирован на том форуме.
Пытаюсь понять, что ты изобретаешь? Какой-то редактор конспектов... где-то кликаешь по картинке... аддон для Блендера
фишка в том, что прога правильно работает только тогда, когда поставить и убрать галочку с комбобокса - edit, это не я виноват, это глюк такой получился, а прога - справочник с быстрой навигацией, сохраняет данные  пятимерного массива и считывает их из файлов, главная фишка - быстрая навигация, на это делался уклон ещё с появления идеи, что навигация должна быть не только по дереву, но и по гриду.
Прога пока работает на создание файла, сохранение, редактирование массива, открывается файл пока только ручным вводом названия проекта, а при навигации по массиву: клик по ячейки заглавного столбца (но не нулевой) - шаг на измерение назад, клик по ячейке заглавной строки - шаг в выбранную ветку таблицы массива, двойной клик (без галочки "редактирование") по ячейке массива - шаг в выбранную ветку ячейки. Задумывался редактор как редактор некоторого кода, обратный волновой алгоритм - реальная фишка для аппаратной части (контроллеров распознования образов, речевых и прочих, но у меня задумывался алгоритм для распознавания треугольников), в настощий момент мне это обратный волновой не нужен - не до него вообще, а вот программку решил перепрофилировать, так как понял - что справочник с быстрой навигацией нужен сильно.