Я только начинаю изучать Maxscript |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
Я только начинаю изучать Maxscript |
26/04/2018, 17:25
Сообщение
#1186
|
|
Ученик Группа: Пользователи Сообщений: 25 Регистрация: 29/05/2007 Пользователь №: 53 407 |
Приветствую . Друзья помогите разобраться почему скрипт не работает. Он должен удалять дублирующиеся полигоны но при запуске Макс выдает ошибку.
CODE ( --change this value if the script is deleting too few or too many faces local limit = 0.01 local obj = selection fn p3Equal p3a p3b = —"close enough" for point3 values ( local pm = limit / 2.0 if (p3b > (p3a - pm)) and (p3b < (p3a + pm)) and (p3b > (p3a - pm)) and (p3b < (p3a + pm)) and (p3b > (p3a - pm)) and (p3b < (p3a + pm)) then true else false ) ( local polyList = #{} polyCount = polyOp.getNumFaces obj polyList.count = polyCount for p = 1 to polyCount - 1 do ( if not polyList then ( polyLoc = polyOp.getFaceCenter obj p for np = p + 1 to polyCount do ( npolyLoc = polyOp.getFaceCenter obj np if p3Equal polyLoc npolyLoc then polyList = true ) ) ) --could be replaced with a setFaceSelection if required polyOp.deleteFaces obj polyList ) ) Источник |
|
|
01/07/2018, 11:30
Сообщение
#1187
|
|
Рыцарь форума Группа: Участник Сообщений: 2 211 Регистрация: 01/04/2003 Из: Moscow/Russia Пользователь №: 1 802 |
Привет! Что то не могу понять как проецировать картинку на текстуру (так как работают stamp кисти), не поможете? Дано: 1. Точка в x,y,x пространстве. 2. Картинка для stamp'а. 3. 3d объект с UV 4. Картинка текстуры. Нужно: Спроецировать stamp картинку на текстуру используя развертку (u,v,w) объекта. На схеме: 1. Проецирование точки из xyz в uvw и отрисовка пикселя на текстуре. Работает. 2. Проецирование точки из xyz в uvw и отрисовка stamp изображения используя в качестве центра точку проецирования на текстуре (x,y). Работает в случае если stamp картинка не выходит за рамки треугольника на развертке относительно которого получена спроецированная точка. 3. Как быть если stamp изображение выходит за пределы треугольника?! Сообщение отредактировал RGhost - 01/07/2018, 11:57 |
|
|
01/07/2018, 16:29
Сообщение
#1188
|
|
MaxMan Группа: Пользователи Сообщений: 153 Регистрация: 14/08/2015 Пользователь №: 109 394 |
Нужно: Спроецировать stamp картинку на текстуру используя развертку (u,v,w) объекта. Нужно использовать скрипт или это можно сделать без использования скрипта? Если не нужно использовать скрипт, тогда попробуйте такой вариант: Пример: Выделяем объект с текстурой. Создаем текстуру Composite используя текстуру объекта и картинку stamp. Применяем к объекту модификатор UVW Mapping и выбираем второй канал. В карте с картинкой stamp устанавливаем второй канал и отключаем Tile. Если нужно получить спроецированную картинку, тогда используем Render To Texture. Если нужно привязать Gizmo модификатора UVW Mapping к объекту Point, тогда испольуем скрипт Такой вариант подходит для вас? |
|
|
01/07/2018, 18:04
Сообщение
#1189
|
|
Рыцарь форума Группа: Участник Сообщений: 2 211 Регистрация: 01/04/2003 Из: Moscow/Russia Пользователь №: 1 802 |
@igorznag2 Спасибо, с канала на канал идея мне приходила в голову, пока это как запасной план. Проецировать нужно будет тысячи точек.
Хотелось бы понять как в теории такое делается. Если по честному то надо трейсить каждый пиксель я так понимаю. Но может я что то упускаю, может есть методы проще... Можно еще создать plane'ы со stamp в точках пересечения с объектом и потом или их attach'ить->RTT или трейсить на объект. И то и другое не быстро будет работать. Мне интересны пока любые идеи. |
|
|
01/07/2018, 21:29
Сообщение
#1190
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
имхо, трейсить.
У тебя там разрыв между двумя кусками, на которые наложен один штамп, а в реальности это будет куча разрозненных uv-шеллов, на которых под разными углами, в разном масштабе наложены разные штампы. Поэтому для каждого треугольника придется по отдельности учитывать его поворот/масштаб и то какие из штампов на него наложены, а это куча операций. Ну и само собой получится, что все пиксели штампа, которые не попадают в треугольник нужно каждый раз отбрасывать как ненужные. С трейсингом же независимо от количества штампов нужно лишь width*height раз узнать попал ли луч в треугольник развертки и если попал, то в какую точку штампа он попал и какой пиксель текстуры штампа соответствует этой точке. А вот как antialiasing между соседними пикселями делать это даже наверное посложнее вопрос. Сообщение отредактировал Jahman - 01/07/2018, 21:39 |
|
|
03/07/2018, 14:35
Сообщение
#1191
|
|
MaxMan Группа: Пользователи Сообщений: 153 Регистрация: 14/08/2015 Пользователь №: 109 394 |
@igorznag2 Спасибо, с канала на канал идея мне приходила в голову, пока это как запасной план. Проецировать нужно будет тысячи точек. Почему для вас не подходит такой план? Я написал скрипт, который делает Render To Texture для множество точек. Пример: Такой вариант подходит для вас? |
|
|
03/07/2018, 16:32
Сообщение
#1192
|
|
Рыцарь форума Группа: Участник Сообщений: 2 211 Регистрация: 01/04/2003 Из: Moscow/Russia Пользователь №: 1 802 |
@igorznag2 Спасибо, с канала на канал идея мне приходила в голову, пока это как запасной план. Проецировать нужно будет тысячи точек. Почему для вас не подходит такой план? Я написал скрипт, который делает Render To Texture для множество точек. Пример: Такой вариант подходит для вас? Спасибо за участие @igorznag2! Интересно сколько займет проецирование таким методом при условии что текстура 8192x8192 (или больше) а точек 600 000 (или больше). Я так понимаю Ваш скрипт рендерит для каждого стампа текстуру а потом она добавляется к уже отрендереной? Вообще я думаю совмещу два метода. Мой второй вариант хорошо (и быстро) работает где нет разрывов в развертке, а краевые (там где разрывы) стампы уже можно посчитать через RTT. Разрывов в геометрии будет немного. Сообщение отредактировал RGhost - 03/07/2018, 16:33 |
|
|
15/07/2019, 20:40
Сообщение
#1193
|
|
Уже не новичок Группа: Пользователи Сообщений: 11 Регистрация: 19/05/2007 Пользователь №: 52 191 |
Я правильно понимаю что эта штука позволяет запускать работающие только в Editable Poly скрипты в Edit Poly?
Подскажите, как это нужно применять, например к этому скрипту (align Pivot to selection), помимо того что скопировать .ms в папку stdscripts? Код (
function FnSetPivot = ( delta = [0,0,0] for verts in $.selectedVerts do delta += verts.pos delta /= $.selectedVerts.count $.pivot = delta ) case subobjectLevel of ( 2:$.ConvertSelection #Edge #Vertex 3:$.ConvertSelection #Border #Vertex 4:$.ConvertSelection #Face #Vertex 5:$.ConvertSelection #Element #Vertex ) if subobjectLevel == 0 then for i in selection do (i.pivot = ((i.max + i.min)/2)) else FnSetPivot() ) |
|
|
15/07/2019, 23:14
Сообщение
#1194
|
|
Рыцарь форума Группа: Участник Сообщений: 2 211 Регистрация: 01/04/2003 Из: Moscow/Russia Пользователь №: 1 802 |
Я правильно понимаю что эта штука позволяет запускать работающие только в Editable Poly скрипты в Edit Poly? Подскажите, как это нужно применять, например к этому скрипту (align Pivot to selection), помимо того что скопировать .ms в папку stdscripts? Код ( function FnSetPivot = ( delta = [0,0,0] for verts in $.selectedVerts do delta += verts.pos delta /= $.selectedVerts.count $.pivot = delta ) case subobjectLevel of ( 2:$.ConvertSelection #Edge #Vertex 3:$.ConvertSelection #Border #Vertex 4:$.ConvertSelection #Face #Vertex 5:$.ConvertSelection #Element #Vertex ) if subobjectLevel == 0 then for i in selection do (i.pivot = ((i.max + i.min)/2)) else FnSetPivot() ) Нет, эта штука унифицирует функции по работе с editable poly и editpoly и позволяет прогеру писать скрипты быстрее. Тоесть код который у вас есть нужно переписать используя эту штуку или просто под editpoly modifier. |
|
|
08/10/2019, 16:56
Сообщение
#1195
|
|
Уже не новичок Группа: Пользователи Сообщений: 22 Регистрация: 20/04/2013 Пользователь №: 89 988 |
Здравствуйте
Проблемка - создал файл скриптом: Src = "D:\\art" file = (createFile (Src + "\\text.bat")) При запуске файла(через проводник) ошибка - файл используется(очевидно открытым 3ds MAX) Вопрос: Какой командой отвязать макс от файла, чтобы стало возможным запустить файл не закрывая макс? Сообщение отредактировал kuirp - 08/10/2019, 17:00 |
|
|
08/10/2019, 19:14
Сообщение
#1196
|
|
MaxMan Группа: Пользователи Сообщений: 153 Регистрация: 14/08/2015 Пользователь №: 109 394 |
|
|
|
05/04/2020, 18:34
Сообщение
#1197
|
|
MaxMan Группа: Пользователи Сообщений: 180 Регистрация: 04/05/2006 Из: Ryazan Пользователь №: 30 816 |
Хелп по макскрипту изучать не могу, вообще не знаю английский, только так методом тыка, ищу чтото, сравниваю как написано и пытаюсь понять)
Подскажите, правильно ли я поставил коментарии к строкам? Я это для себя хочу как подсказку оставить. И еще какая команда меняет значение интерполяции и какая команда вкл/откл оптимизацию на прямых участках? Спасибо CODE sp = SplineShape () -- скобки вместо этого “pos:[0,0,0]”
( addNewSpline sp --создать новый сплайн close sp 1 -- замкнуть этот сплайн по завершении, можно и желательно написать в конце этого блока после последней точки сплайна, но и так тоже работает addKnot sp 1 #Corner #curve [0,0,0] -- первая точка первого сплайна” #тип вершины #тип линии(кривая или прямая), если кривая то тип нужен не Corner и нужно добавить координаты маркеров, как в строке ниже в этом блоке , хотя можно и не ставить координаты для маркеров (как в этой строке) если тип вершины Corner addKnot sp 1 #Corner #line [50,50,0] -- вторая точка addKnot sp 1 #bezierCorner #curve[100,0,0] [100,25,0] [50,-50,0] -- третья точка addNewSpline sp - новый сплайн этого сплайна addKnot sp 2 #Corner #curve [110,0,0] -- первая точка addKnot sp 2 #Corner #line [160,50,0] -- вторая addKnot sp 2 #bezierCorner #curve[210,0,0] [100,25,0] [50,-50,0] -- третья (не замкнут) ) -- завершение команды SplineShape () updateshape sp Сообщение отредактировал Ded_ - 05/04/2020, 18:42 |
|
|
06/04/2020, 12:44
Сообщение
#1198
|
|
MaxMan Группа: Пользователи Сообщений: 180 Регистрация: 04/05/2006 Из: Ryazan Пользователь №: 30 816 |
Подскажите пожалуйста выражение для замены в Notepad++
Есть код: CODE N1 M14X0Y0 X250Y50 X100Y0 N2 M14X110Y0 X160Y50 X210Y0 N3 ... Нужно сделать такой: CODE addNewspline sp
addKnot sp 1 #Corner #Line [0,0,0] addKnot sp 1 #Corner #Line [250,0,0] addKnot sp 1 #Corner #Line [50,0,0] addNewspline sp addKnot sp 2 #Corner #Line [110,0,0] addKnot sp 2 #Corner #Line [160,50,0] addKnot sp 2 #Corner #Line [210,0,0] addNewspline sp ... Сообщение отредактировал Ded_ - 06/04/2020, 12:53 |
|
|
06/04/2020, 16:54
Сообщение
#1199
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
если знания регулярных выражений имеются, то никаких проблем
далее убиваем все строки начинающиеся на M далее все строки начинающиеся с X(\d+)Y(\d+) меняем на addKnot sp index #Corner #Line [ \1 , \2 , 0 ] вопрос тока нафига? не проще просто парсить файл и на лету создавать сплайны? впрочем это был риторический вопрос Сообщение отредактировал Jahman - 06/04/2020, 16:55 |
|
|
07/04/2020, 21:42
Сообщение
#1200
|
|
MaxMan Группа: Пользователи Сообщений: 180 Регистрация: 04/05/2006 Из: Ryazan Пользователь №: 30 816 |
если знания регулярных выражений имеются, то никаких проблем далее убиваем все строки начинающиеся на M далее все строки начинающиеся с X(\d+)Y(\d+) меняем на addKnot sp index #Corner #Line [ \1 , \2 , 0 ] вопрос тока нафига? не проще просто парсить файл и на лету создавать сплайны? впрочем это был риторический вопрос Спасибо большое! Переменная index, то что я не мог никак представить... Просто хочется узнать как это реализовать, для обучения. Сообщение отредактировал Ded_ - 07/04/2020, 21:58 |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 16/04/2024 - 09:58 |