Как автоматически поставить Pivot Point в начальную точку линии в программе 3ds Max(скрипт)

Автор
Сообщение
На сайте c 16.02.2021
Сообщений: 43

Добрый день! 

А есть ли какой то способ чтобы пивот пойнт автоматом поместить в начальную точку линии ?

Возможно какой то скрипт. Идеально бы на несколько линий сразу применить)

На сайте c 06.11.2009
Сообщений: 1670
Россия

что считать начальной точкой линии? стартовую точку или точку ближе к 0,0,0 координат?
в любом случае это наипростейший скрипт, который вам наверно даже Алиса накалякает)
на максскрипте не пишу, но вот вам первый же ответ

fn setPivotToFirstKnot obj = (    if classOf obj == splineShape do (        local numSplines = numSplines obj        if numSplines > 0 do (            local firstSpline = 1            local firstKnot = 1            local firstPos = getKnotPoint obj firstSpline firstKnot            obj.pivot = firstPos        )    ))for obj in selection do setPivotToFirstKnot obj

чё то у меня не сработал)))

На сайте c 16.02.2021
Сообщений: 43

Да стартовую точку) для меня написать скрипт это что в космос полететь)) мне бы кнопочку)

На сайте c 06.11.2009
Сообщений: 1670
Россия

ну сейчас придут мастера) это был мой первый опыт практически и он потерпел фиаско)

На сайте c 11.07.2009
Сообщений: 1643

for obj in selection do (p1 = getKnotPoint obj 1 1; obj.pivot = p1)

Вроде работает

На сайте c 06.11.2009
Сообщений: 1670
Россия
Цитата александр...:

for obj in selection do (p1 = getKnotPoint obj 1 1; obj.pivot = p1)

Вроде работает

работает!!! вот что значит опыт, одной нейронки мало)))

На сайте c 11.07.2009
Сообщений: 1643
Цитата 2garyn:
Цитата александр...:

for obj in selection do (p1 = getKnotPoint obj 1 1; obj.pivot = p1)

Вроде работает

работает!!! вот что значит опыт, одной нейронки мало)))

Надо знать как у нее попросить ))

На сайте c 16.02.2021
Сообщений: 43

Оу ! Попробую позже! Спасибо заранее 

На сайте c 06.11.2009
Сообщений: 1670
Россия
Цитата александр...:
Цитата 2garyn:
Цитата александр...:

for obj in selection do (p1 = getKnotPoint obj 1 1; obj.pivot = p1)

Вроде работает

работает!!! вот что значит опыт, одной нейронки мало)))

Надо знать как у нее попросить ))

это верно. но чтобы знать, надо хоть немножко уже разбираться) Ну и я вкинул видимо не в ту нейронку, на про тарифе она была умнее)) но все равно в одну строчку ни одна нейронка никогда не напишет) Лучший по портянкам наверно дипсик)

На сайте c 06.05.2014
Сообщений: 4160
Краснодар

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

85vkqyk8.jpg

и в edit меню

yodpii2l.jpg

На сайте c 16.02.2021
Сообщений: 43

Цитата александр...:
for obj in selection do (p1 = getKnotPoint obj 1 1; obj.pivot = p1)

огонь! работает как надо) спасибо большое

Цитата shinodem:
pivot placer

ну немножко  не то) но спасибо

На сайте c 06.03.2009
Сообщений: 18
Pandora
Цитата александр...:
Надо знать как у нее попросить ))

А что не попросили еще за tangentCurve3D ? Так же было бы полезно для ориентации пивота )

Цитата 2garyn:
на максскрипте не пишу

а на чем пишите?

На сайте c 16.02.2021
Сообщений: 43

Evilis, я прошу))

На сайте c 06.11.2009
Сообщений: 1670
Россия
Цитата Evilis:
Цитата александр...:
Надо знать как у нее попросить ))

А что не попросили еще за tangentCurve3D ? Так же было бы полезно для ориентации пивота )

Цитата 2garyn:
на максскрипте не пишу

а на чем пишите?

на c#, но под автокад(чуть под ревит)

На сайте c 11.07.2009
Сообщений: 1643

( local sel = selection as array if sel.count > 0 then ( for obj in sel where (canConvertTo obj SplineShape) do ( -- 1. Convert to Spline if necessary if classOf obj != SplineShape and classOf obj != Line do (convertToSplineShape obj) -- 2. Get position and tangent at start (0.0) local p1 = interpCurve3D obj 1 0.0 local vX = normalize (tangentCurve3D obj 1 0.0) -- 3. Build orientation vectors local vUp = [0,0,1] if (abs (dot vX vUp)) > 0.99 do vUp = [0,1,0] local vY = normalize (cross vUp vX) local vZ = normalize (cross vX vY) -- 4. Store current visual state local oldObjTM = obj.objecttransform local targetRotTM = matrix3 vX vY vZ p1 -- 5. Apply transformation to the pivot obj.transform = targetRotTM -- 6. Offset the geometry back to original world position local invRot = inverse targetRotTM.rotation obj.objectoffsetpos = (oldObjTM.translation - p1) * invRot obj.objectoffsetrot = oldObjTM.rotation * invRot ) format "Done: Processed % objects.\n" sel.count ) else (messageBox "Select at least one Spline object."))

Вот так получилось с поворотом ,  вроде тоже работает 

На сайте c 16.02.2021
Сообщений: 43
Цитата александр...:

( local sel = selection as array if sel.count > 0 then ( for obj in sel where (canConvertTo obj SplineShape) do ( -- 1. Convert to Spline if necessary if classOf obj != SplineShape and classOf obj != Line do (convertToSplineShape obj) -- 2. Get position and tangent at start (0.0) local p1 = interpCurve3D obj 1 0.0 local vX = normalize (tangentCurve3D obj 1 0.0) -- 3. Build orientation vectors local vUp = [0,0,1] if (abs (dot vX vUp)) > 0.99 do vUp = [0,1,0] local vY = normalize (cross vUp vX) local vZ = normalize (cross vX vY) -- 4. Store current visual state local oldObjTM = obj.objecttransform local targetRotTM = matrix3 vX vY vZ p1 -- 5. Apply transformation to the pivot obj.transform = targetRotTM -- 6. Offset the geometry back to original world position local invRot = inverse targetRotTM.rotation obj.objectoffsetpos = (oldObjTM.translation - p1) * invRot obj.objectoffsetrot = oldObjTM.rotation * invRot ) format "Done: Processed % objects.\n" sel.count ) else (messageBox "Select at least one Spline object."))

Вот так получилось с поворотом ,  вроде тоже работает 

Крутотень! Спасибо 

На сайте c 20.08.2007
Сообщений: 2797
Одесса

Вопрос вдогонку. Есть в максе фича, которая автоматически перемещает стрелки перемещения в точку, где находится курсор во время перемещения объекта?

Читают эту тему: Kovu , renderman , Elena_S21