3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

82 страниц V  « < 78 79 80 81 82 >  
Reply to this topicStart new topic
> Я только начинаю изучать Maxscript
mikola
сообщение 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
)
)

Источник https://forums.autodesk.com/t5/3ds-max-modeling/how-d..
Go to the top of the page
 
+Quote Post
RGhost
сообщение 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
Go to the top of the page
 
+Quote Post
igorznag2
сообщение 01/07/2018, 16:29
Сообщение #1188


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 153
Регистрация: 14/08/2015
Пользователь №: 109 394



Цитата(RGhost @ 01/07/2018, 11:30) *
Нужно: Спроецировать stamp картинку на текстуру используя развертку (u,v,w) объекта.


Нужно использовать скрипт или это можно сделать без использования скрипта?
Если не нужно использовать скрипт, тогда попробуйте такой вариант:
Пример: https://youtu.be/1XjqjDZ3yWI

Выделяем объект с текстурой.
Создаем текстуру Composite используя текстуру объекта и картинку stamp.
Применяем к объекту модификатор UVW Mapping и выбираем второй канал.
В карте с картинкой stamp устанавливаем второй канал и отключаем Tile.
Если нужно получить спроецированную картинку, тогда используем Render To Texture.
Если нужно привязать Gizmo модификатора UVW Mapping к объекту Point, тогда испольуем скрипт Gizmo Control.

Такой вариант подходит для вас?
Go to the top of the page
 
+Quote Post
RGhost
сообщение 01/07/2018, 18:04
Сообщение #1189


Рыцарь форума
Иконка группы

Группа: Участник
Сообщений: 2 211
Регистрация: 01/04/2003
Из: Moscow/Russia
Пользователь №: 1 802



@igorznag2 Спасибо, с канала на канал идея мне приходила в голову, пока это как запасной план. Проецировать нужно будет тысячи точек.

Хотелось бы понять как в теории такое делается. Если по честному то надо трейсить каждый пиксель я так понимаю. Но может я что то упускаю, может есть методы проще...

Можно еще создать plane'ы со stamp в точках пересечения с объектом и потом или их attach'ить->RTT или трейсить на объект. И то и другое не быстро будет работать.

Мне интересны пока любые идеи.
Go to the top of the page
 
+Quote Post
Jahman
сообщение 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
Go to the top of the page
 
+Quote Post
igorznag2
сообщение 03/07/2018, 14:35
Сообщение #1191


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 153
Регистрация: 14/08/2015
Пользователь №: 109 394



Цитата(RGhost @ 01/07/2018, 18:04) *
@igorznag2 Спасибо, с канала на канал идея мне приходила в голову, пока это как запасной план. Проецировать нужно будет тысячи точек.

Почему для вас не подходит такой план?
Я написал скрипт, который делает Render To Texture для множество точек.
Пример: https://youtu.be/5tEC1qztvPU
Такой вариант подходит для вас?
Go to the top of the page
 
+Quote Post
RGhost
сообщение 03/07/2018, 16:32
Сообщение #1192


Рыцарь форума
Иконка группы

Группа: Участник
Сообщений: 2 211
Регистрация: 01/04/2003
Из: Moscow/Russia
Пользователь №: 1 802



Цитата(igorznag2 @ 03/07/2018, 14:35) *
Цитата(RGhost @ 01/07/2018, 18:04) *
@igorznag2 Спасибо, с канала на канал идея мне приходила в голову, пока это как запасной план. Проецировать нужно будет тысячи точек.

Почему для вас не подходит такой план?
Я написал скрипт, который делает Render To Texture для множество точек.
Пример: https://youtu.be/5tEC1qztvPU
Такой вариант подходит для вас?


Спасибо за участие @igorznag2!

Интересно сколько займет проецирование таким методом при условии что текстура 8192x8192 (или больше) а точек 600 000 (или больше).

Я так понимаю Ваш скрипт рендерит для каждого стампа текстуру а потом она добавляется к уже отрендереной?

Вообще я думаю совмещу два метода. Мой второй вариант хорошо (и быстро) работает где нет разрывов в развертке, а краевые (там где разрывы) стампы уже можно посчитать через RTT. Разрывов в геометрии будет немного.

Сообщение отредактировал RGhost - 03/07/2018, 16:33
Go to the top of the page
 
+Quote Post
vinigor
сообщение 15/07/2019, 20:40
Сообщение #1193


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 11
Регистрация: 19/05/2007
Пользователь №: 52 191



Я правильно понимаю что эта штука позволяет запускать работающие только в Editable Poly скрипты в Edit Poly?
http://www.scriptspot.com/3ds-max/scripts/polymodop
Подскажите, как это нужно применять, например к этому скрипту (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()
)
Go to the top of the page
 
+Quote Post
RGhost
сообщение 15/07/2019, 23:14
Сообщение #1194


Рыцарь форума
Иконка группы

Группа: Участник
Сообщений: 2 211
Регистрация: 01/04/2003
Из: Moscow/Russia
Пользователь №: 1 802



Цитата(vinigor @ 15/07/2019, 20:40) *
Я правильно понимаю что эта штука позволяет запускать работающие только в Editable Poly скрипты в Edit Poly?
http://www.scriptspot.com/3ds-max/scripts/polymodop
Подскажите, как это нужно применять, например к этому скрипту (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.
Go to the top of the page
 
+Quote Post
kuirp
сообщение 08/10/2019, 16:56
Сообщение #1195


Уже не новичок
Иконка группы

Группа: Пользователи
Сообщений: 22
Регистрация: 20/04/2013
Пользователь №: 89 988



Здравствуйте

Проблемка - создал файл скриптом:

Src = "D:\\art"
file = (createFile (Src + "\\text.bat"))

При запуске файла(через проводник) ошибка - файл используется(очевидно открытым 3ds MAX)
Вопрос:
Какой командой отвязать макс от файла, чтобы стало возможным запустить файл не закрывая макс? huh.gif

Сообщение отредактировал kuirp - 08/10/2019, 17:00
Go to the top of the page
 
+Quote Post
igorznag2
сообщение 08/10/2019, 19:14
Сообщение #1196


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 153
Регистрация: 14/08/2015
Пользователь №: 109 394



Цитата(kuirp @ 08/10/2019, 16:56) *
Какой командой отвязать макс от файла, чтобы стало возможным запустить файл не закрывая макс?

Код
close file
Go to the top of the page
 
+Quote Post
Ded_
сообщение 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
Go to the top of the page
 
+Quote Post
Ded_
сообщение 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
Go to the top of the page
 
+Quote Post
Jahman
сообщение 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
Go to the top of the page
 
+Quote Post
Ded_
сообщение 07/04/2020, 21:42
Сообщение #1200


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(Jahman @ 06/04/2020, 16:54) *
если знания регулярных выражений имеются, то никаких проблем
Прикрепленное изображение
далее убиваем все строки начинающиеся на M
далее все строки начинающиеся с X(\d+)Y(\d+) меняем на addKnot sp index #Corner #Line [ \1 , \2 , 0 ]

вопрос тока нафига? не проще просто парсить файл и на лету создавать сплайны? впрочем это был риторический вопрос

Спасибо большое! Переменная index, то что я не мог никак представить...
Просто хочется узнать как это реализовать, для обучения.

Сообщение отредактировал Ded_ - 07/04/2020, 21:58
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






82 страниц V  « < 78 79 80 81 82 >
Reply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 16/04/2024 - 20:05