Я только начинаю изучать Maxscript |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
Я только начинаю изучать Maxscript |
05/07/2004, 08:17
Сообщение
#31
|
|
Знаток Группа: Участник Сообщений: 257 Регистрация: 16/05/2003 Из: SPb Пользователь №: 2 235 |
луп я уже смотрю готов, эх неуспел я, ну да это и хорошо, остался подобный шринк сделать.
QUOTE Ну и зря. Простой вариант не всегда лучше сложного. Мой алгоритм переберает все эджи полученные от ринга или лупа, т.е. чем больше плотность сетки, тем дольше будет происходить сравнение. В твоем алгоритме сравнивается фиксированное число точек и число сравнений не зависит от сложности сетки модели, что и сказывается(положительно) на производительности согласен, но думаю современные машины с выделением рёбер справяться без проблем вне зависимости от тяжести модели...хотя это было бы неплохо проверить, мало ли какой будет результат :-))) |
|
|
05/07/2004, 08:36
Сообщение
#32
|
|
Красив как Бог, умен как Дъявол Группа: Хранители порядка Сообщений: 4 478 Регистрация: 16/06/2002 Из: Одесса Пользователь №: 8 |
pepper и Desead - молодцы!
Только хорошо бы все скрипты доводить до полезной завершенности. Loop я так понял тоже работет только в одну сторону?!.. Давайте все таки соберем этот набор из Selection Tool в нечто полноценное и отдадим народу в пользование. ) Сам с удовольствием буду пользоваться. я это вижу как 4е инструмента - 4е иконки на тулзбаре.. иконки могу нарисовать.. 1) Grow Ring 2) Shrink Ring 3) Grow Loop 4) Shrink Loop Но не забывайте, это инструмет, а инструмент должен быть быстрым и надежным! Если он будет тормозить работу или глючить - толку тогда от него?.. Вспоминаю (да именно вспоминаю) CleanCut... замечательный удобный инструмент... если бы не вылетал раз в 5 минут!! Сообщение отредактировал Shiva - 05/07/2004, 08:45 |
|
|
05/07/2004, 09:39
Сообщение
#33
|
|
выпуклая бобышка Группа: Модераторы Сообщений: 4 587 Регистрация: 05/07/2002 Из: верг Пользователь №: 281 |
Странно что у тебя с клинкатом проблемы - у меня все путем, не знаю даже как без него сейчас было бы
|
|
|
05/07/2004, 10:27
Сообщение
#34
|
|
Наш человек Группа: Участник Сообщений: 415 Регистрация: 10/07/2003 Из: Киев, Украина Пользователь №: 2 786 |
QUOTE Loop я так понял тоже работет только в одну сторону?!.. Что значит "тоже" и в одну сторону? Все работает как и просили: выделяется по 2 эджа смежных с выделенными эджами. QUOTE 1) Grow Ring 2) Shrink Ring 3) Grow Loop 4) Shrink Loop А что каждый должен выполнять? |
|
|
05/07/2004, 13:18
Сообщение
#35
|
|
Take him away! Группа: Модераторы Сообщений: 2 575 Регистрация: 31/10/2002 Из: оттуда Пользователь №: 1 040 |
имеется ввиду что неплохо бы иметь возможность как увеличивать выделение, так и уменьшать его
|
|
|
05/07/2004, 22:05
Сообщение
#36
|
|
Красив как Бог, умен как Дъявол Группа: Хранители порядка Сообщений: 4 478 Регистрация: 16/06/2002 Из: Одесса Пользователь №: 8 |
Именнно! )
каждый из них должен выполнять свою аналогию.. 1) Grow Ring - выделение увеличиваеться по кольцу <IIII> 2) Shrink Ring - выделение уменьшаеться по кольцу >IIII< 3) Увеличиваетьяс по "Смежным"??? <----> 4) уменьшаетсья по смежным. >----< |
|
|
07/07/2004, 10:17
Сообщение
#37
|
|
Знаток Группа: Участник Сообщений: 257 Регистрация: 16/05/2003 Из: SPb Пользователь №: 2 235 |
QUOTE(Shiva @ Jul 5 2004, 23:05) Именнно! ) каждый из них должен выполнять свою аналогию.. 1) Grow Ring - выделение увеличиваеться по кольцу <IIII> 2) Shrink Ring - выделение уменьшаеться по кольцу >IIII< 3) Увеличиваетьяс по "Смежным"??? <----> 4) уменьшаетсья по смежным. >----< я вроде наконец то понял как должен работат shrink ring и shrink loop, на выходных если получиться со временем то попробую написать :-))) |
|
|
07/07/2004, 10:56
Сообщение
#38
|
|
Наш человек Группа: Участник Сообщений: 415 Регистрация: 10/07/2003 Из: Киев, Украина Пользователь №: 2 786 |
А я вроде уже сделал.
С шринк лупом проблем почти нет. А вот шринк ринг не работает только если веделенны ВСЕ грани рига(от одного края объекта до другого).....короче, тестим! Если всё устроит, то заверну все скрипты, чтобы можно было хоткеи назначить
Прикрепленные файлы
|
|
|
07/07/2004, 13:34
Сообщение
#39
|
|
Знаток Группа: Участник Сообщений: 257 Регистрация: 16/05/2003 Из: SPb Пользователь №: 2 235 |
2 pepper: ...качаем, тестим, щас чё нить скажу :-)))
слегка глянул, при не 4 угольных полигонах работает loop странно, остальное пока не глядел :-) Сообщение отредактировал Desead - 07/07/2004, 13:57 |
|
|
07/07/2004, 15:37
Сообщение
#40
|
|
Знаток Группа: Участник Сообщений: 257 Регистрация: 16/05/2003 Из: SPb Пользователь №: 2 235 |
пока не забыл, есть пару вопросов к общественности интересующейся скриптами :
1. на discreet есть документ - maxscript referense version four от января 2001 г, кто-нить встречал версию поновее ? 2. кто-нить знает насколько аккуратно скрипт работает с оперативной памятью, а то возникает ощущение что он всё очень сильно засоряет и за собой не убирает 3. кто-нить делал аналог майковского append polygon- а то строить полигоны по вертексам достало, по рёбрам быстрее. 4. в unwrap есть 2 очень полезные тулзы - stitch selected и pack uvs, но как и многое в максе до ума не доведённые. Кто нибудь их переделывал ? а то мне сейчас предстоит это делать. Проблема в следующем: при упаковке остаётся много свободного места, наверняка можно использовать более продуктивный алгоритм сортировки, а при склеивании(stitch) макс масштабирует только ребро, а не весь элемент - но ведь это же глупо, намного быстрей можно было раскладывать всё при наличии нормального ститча. Опять же эти инструменты в первую очередь необходимы гейм разработчикам. уххх... ну вроде всё, надеюсь хоть кто-то с чем-нить сталивался |
|
|
07/07/2004, 20:34
Сообщение
#41
|
|
фломастер Группа: Участник Сообщений: 5 701 Регистрация: 19/06/2002 Из: минск Пользователь №: 98 |
ага, посмотрим как вы shrink победите
|
|
|
09/07/2004, 12:46
Сообщение
#42
|
|
Знаток Группа: Участник Сообщений: 257 Регистрация: 16/05/2003 Из: SPb Пользователь №: 2 235 |
2 pepper: вообщем просидел я с твоим шринком 2 дня, ничего не понял как ты пытался его реализовать, понял только что ищешь бордюры, и их удаляешь, что происходит дальше, то есть для чего ты сравниваешь одни и теже фейсы в циклах while я не понял. Если оттолкнуться от того что в обычном массиве номера фэйсов будут повторяться, то это можно как-то использовать и кроме определения бордюра, что наверное ты и старался сделать, вообщем если ты объяснишь суть вот этого кусочка, то был бы рад. И кстати на мой взгляд просто удалять бордюр нельзя не ссылаясь на соседние рёбра, так можно и лишнего наубирать, но это уже зависит от того как мы понимаем алгоритм работы шринка.
а вот и непонятный кусочек: i=1 while i<=pa.count-1 do ( j=i+1 b=0 clearlistener() format "i=% j=% b=%\n" i j b while j<=pa.count do ( ----- while 2 if pa[i]==pa[j] then ( deleteItem pa j b=1 j-=1 --cause we deleting 1 element ) j+=1 ) ----- end while 2 if b==1 then ( deleteItem pa i i-=1 ) i+=1 ) и ещё чуть не забыл, если выделено всё, то шринк и не должен работать, ему не отчего отнимать :-) чё то все молчат....и в аськах тоже to 111: а почему ты думаешь что со шринком могут быть проблемы? это вроде обычный алгоритм поиска решений |
|
|
09/07/2004, 13:40
Сообщение
#43
|
|
Наш человек Группа: Участник Сообщений: 415 Регистрация: 10/07/2003 Из: Киев, Украина Пользователь №: 2 786 |
Алгоритм едж шринка:
1.выделенные ребра преобразуем в полигоны 2.создаем массивчик в который записываем полигоны, пренадлежащие данному еджу Если выделенны 2 соседних еджа, то полигон в таком массиве встретится 2 раза. Если полигон встречается 1 раз, то он являлется "крайним"(из которого мы получим крайние еджи)) Теперь непонятный кусок: 3.елси полигоны совпадют(их может быть >2) удаляем их из массива (т.к. нам нужны полигоны, которые встречаются 1 раз) CODE i=1 while i<=pa.count-1 do--перебираем до предпоследнего елемента ( j=i+1--наинаем сравнивать с позиции следующего элемента b=0 --а было ли совпадение clearlistener() format "i=% j=% b=%\n" i j b while j<=pa.count do --перебор до последнего елемента ( ----- while 2 if pa[i]==pa[j] then--совпали ( deleteItem pa j--удаляем b=1--отмечаем что совпали j-=1 --массив уменьшился,значит счетчик тоже уменьшаем ) j+=1--следующий елемент ) ----- end while 2 if b==1 then --если было совпадение ( deleteItem pa i--удаляем елемент i-=1--уменьшаем счетчик ) i+=1 --следующий елемент ) Я не использовал цикл for т.к. он не позволяет уменьшать счетчик. Поэтому выбрал while. 4.выделяем полученные "крайние" полигоны (их можно увидеть перейдя на уровень полигонов после выполнения скрипта) 5.конвертим их в еджи 6.вычитаем: (первоначально выделенные еджи)-(еджи от "крайних" полигонов) Особенность конвертации еджей в полигоны(пункт 1) состоит в том, что если едж крайний, то один из его полигонов будет с индексом 0! Значит 4 пункт не работает(в объектах нет полигона с индексом 0). То есть он работает(я удаляю 0 элементы), но не учитывается ............. ............. у-у-у....появилась идея.... если едж крайний и он выделенный, то он однозначно должен быть не выделенным(после шринка) .....надо замутить..... |
|
|
09/07/2004, 13:46
Сообщение
#44
|
|
фломастер Группа: Участник Сообщений: 5 701 Регистрация: 19/06/2002 Из: минск Пользователь №: 98 |
так изложите алгоритм шринка на человеческом языке
|
|
|
09/07/2004, 14:32
Сообщение
#45
|
|
Наш человек Группа: Участник Сообщений: 415 Регистрация: 10/07/2003 Из: Киев, Украина Пользователь №: 2 786 |
QUOTE так изложите алгоритм шринка на человеческом языке Это на каком? Короче вот. Теперь шринк ринг роботает как надо! Лип шринк в предыдущем файле.
Прикрепленные файлы
|
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 23/04/2024 - 09:54 |