Есть объект, есть камера, двигаем объект таким образом, что в камере он выглядит то приближающимся, то удаляющимся, но его центр в кадре не меняется. Особенно интересно для точек/фейсов.
(на рисунке объекты перемещены вдоль выделеного луча из центра камеры)
каким образом это можно осуществить при редактировании? вопрос анимации не стоит
вообщем да, но надо настраивать под каждую точку и практически нереально проворачивать эту процедуру каждый раз, когда двигаешь вертексы
прикрутить б автоматизацию на автовыбор центра выбранного объекта и заранее указанной камеры
тогда с хоткеем еще можно было б пользоваться
как бы вот место, где прописываются координаты
может кто знает как пт1 заменить на "текущее выделение" объект/вертекс
а пт2 на камеру с именем например projection
а кто будет выравнивать второй конец линии по лучу камера-объект? кто будет заниматься привязкой всех вертексов объекта в линиям? это сколько же таких линий нужно то будет
pt2=undefined
cameras_projection=getNodeByName "projection" all:true
for i=1 to cameras_projection.count do
if superclassof cameras_projection[i]==camera then
(pt2=cameras_projection[i].pos;exit;)
Нужно выделить только один вертекс базового объекта Editable Poly.
Нужно выделить только один объект.
Название камеры должно быть "projection".
Ды возьмите вы просто линию с двумя вертексами, и накиньте на неё модификатор Spline Ik Control.
Сгенерируйте в нём две пустышки, по одной на вертекс, и всё....
Их можно линковать..
Всего, их (пустышек - контролов) будет две. Потому что у сплайна два вертекса (corner).
У каждого вертекса по одной пустышке.
Одна пустышка у одного вертекса, а другая пустышка у другого.
Каждая пустышка контролирует свой вертекс.
Поскольку , если, у линии всего два вертекса, то они (эти вертексы) будут находиться на концах линии.( в начале и в конце)
Те пустышки, которые будут контролировать свои вертексы, тоже будут находиться в позиции своих вертексов, т.е, тоже на концах линии.
Пустышки можно линковать, хоть к камере, хоть к её цели..
------------------
Пробовать мне нать, я и так знаю, как это работает.
так мне не надо линковать вертексы никуда, мне их (вертексы объектов или сами объекты) двигать надо вдоль луча камеры - лучи у камеры идут от центра камеры к краям FOV изображения (по типа как рэйтрасе щитается)
Так, я пробую понимать, но сделать это до конца я не обещаю.
А Вас устроит, если, глядя из камеры, Вы будете перемещать вон тот малиновый поинт, и ставить его в нужное положение.
У него на вращении Лук Ат, а напозиции лимиты, и он прилинкован к зелёному прямоугольнику, равного по габаритам обзору камеры ?
Поместил поинт, выделил объект и переместил его в координатной системе поинта....прям не выходя из камеры, крутёлками внизу...
мне нужно. что б розовый бокс как раз не двигался в плоскости зеленого прямоугольника, а лишь по оси Х, которая всегда смотрит в камеру.
про lookat я и сам знаю, но как его применить к куче вертексов? можно?
все таки скрипт выше лучше работает - проще, без лишнего мусора в сцене и объекты продолжают двигаться и поворачиваться как и прежде без всяких привязок к камере или каким другим объектам
единственное надо каждый раз кнопку нажимать, для нового выделения
единственное надо каждый раз кнопку нажимать, для нового выделения
Попробуйте такой вариант. Пример:
1. В новой сцене создаем несколько объектов и камеру "projection".
2. Запускаем скрипт.
3. Выделяем нужные объекты или подобъекты Vertex.
4. Чтобы отключить, нажимаем кнопку Stop.
5. Чтобы обновить, нажимаем кнопку Refresh.
Кнопку Refresh нужно нажать если:
1. создать новые объекты.
2. перейти от подобъектов Vertex к выделенному объекту.
3. открыть другую сцену и в других случаях.
try (destroyDialog igorznag_tpcs_ch) catch()
rollout igorznag_tpcs_ch "TPCS" width:130 height:30
(
-- GUI
--------
button btn_refresh "Refresh" pos:[10,5]
button btn_stop "Stop" pos:[80,5]
-- Functions
-----------------
fn localMatrix p1 p2 p3 = (
v1 = normalize (p2 - p1)
v3 = normalize (cross v1 (normalize (p3 - p1)))
v2 = normalize (cross v3 v1)
return matrix3 v1 v2 v3 p1
)--fn localMatrix p1 p2 p3 = (
fn coordplane mytrans =(
plane name:"coord_plane" length:0 width:0 lengthsegs:1 widthsegs:1 transform:mytrans
$coord_plane.renderable = off
freeze $coord_plane
hide $coord_plane
)--fn coordplane mytrans =(
fn create_tpcs=
(
try delete $coord_plane
catch ()
pt1=undefined
if(selection.count==1)then
(
if(subObjectLevel==1)then
(
cur_obj=modPanel.getCurrentObject()
if(classof cur_obj==Editable_Poly)then
(
vs=(polyOp.getVertSelection cur_obj)as array
if vs.count==1 then pt1=polyop.getVert cur_obj vs[1] node:selection[1]
)--if(classof subObjectLevel==Editable_Poly)then
)--if(subObjectLevel==1)then
else pt1=selection[1].pos --if(subObjectLevel==1)then
)--if(selection.count==1)then
if classof pt1 == point3 then
(
pt2=undefined
cameras_projection=getNodeByName "projection" all:true
for i=1 to cameras_projection.count do
if superclassof cameras_projection[i]==camera then
(pt2=cameras_projection[i].pos;exit;print"da")
if classof pt2 == point3 then
(
pt3 = [(pt2.x),(pt2.y+10),(pt2.z)]
mymatrix = localMatrix pt1 pt2 pt3
coordplane mymatrix
toolmode.coordsys $coord_plane
try $coord_plane.parent = $ catch()
)--if classof pt2 == point3 then
)--if classof pt1 == point3 then
)--fn create_tpcs=
-- Event Handlers
-------------------
on btn_stop pressed do (deleteAllChangeHandlers id:#igorznag_tpcs;toolmode.coordsys #view)
on igorznag_tpcs_ch open do igorznag_tpcs_ch.btn_refresh.pressed()
on btn_refresh pressed do
(
create_tpcs()
deleteAllChangeHandlers id:#igorznag_tpcs
when select $objects changes id:#igorznag_tpcs do create_tpcs()
)--on btn_refresh pressed do
);createDialog igorznag_tpcs_ch style:#(#style_minimizebox,#style_titlebar,#style_sysmenu)
P.S. Создайте копию сцены перед тем, как использовать скрипт.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
AEplug
(на рисунке объекты перемещены вдоль выделеного луча из центра камеры)
каким образом это можно осуществить при редактировании? вопрос анимации не стоит
Вложения
igorznag
1. Включаем привязки (Snaps) Pivot, Vertex, Edge, Face.
Включаем кнопку Snaps Toggle.
2. Запускаем скрипт, нажимая комбинацию клавиш.
3. Выбираем 2 точки в пространстве.
Первая точка это вершина (Vertex).
Второя точка это опорная точка камеры (Pivot).
4. Выключаем кнопку Snaps Toggle. Включаем кнопку Select and Move.
AEplug
прикрутить б автоматизацию на автовыбор центра выбранного объекта и заранее указанной камеры
тогда с хоткеем еще можно было б пользоваться
AEplug
может кто знает как пт1 заменить на "текущее выделение" объект/вертекс
а пт2 на камеру с именем например projection
iVAt
AEplug
iVAt
AEplug
igorznag
заменяем на код:
Код:
заменяем на код:
Нужно выделить только один вертекс базового объекта Editable Poly.
Нужно выделить только один объект.
Название камеры должно быть "projection".
AEplug
а чего камера так сложно выбирается?
так не проще?
INCUS
Сгенерируйте в нём две пустышки, по одной на вертекс, и всё....
Их можно линковать..
AEplug
прежде чем давать все эти теоретические советы попробовали бы сами сначала
INCUS
У каждого вертекса по одной пустышке.
Одна пустышка у одного вертекса, а другая пустышка у другого.
Каждая пустышка контролирует свой вертекс.
Поскольку , если, у линии всего два вертекса, то они (эти вертексы) будут находиться на концах линии.( в начале и в конце)
Те пустышки, которые будут контролировать свои вертексы, тоже будут находиться в позиции своих вертексов, т.е, тоже на концах линии.
Пустышки можно линковать, хоть к камере, хоть к её цели..
------------------
Пробовать мне нать, я и так знаю, как это работает.
AEplug
INCUS
А Вас устроит, если, глядя из камеры, Вы будете перемещать вон тот малиновый поинт, и ставить его в нужное положение.
У него на вращении Лук Ат, а напозиции лимиты, и он прилинкован к зелёному прямоугольнику, равного по габаритам обзору камеры ?
Поместил поинт, выделил объект и переместил его в координатной системе поинта....прям не выходя из камеры, крутёлками внизу...
Вложения
AEplug
про lookat я и сам знаю, но как его применить к куче вертексов? можно?
Leonidych
AEplug
единственное надо каждый раз кнопку нажимать, для нового выделения
igorznag
1. В новой сцене создаем несколько объектов и камеру "projection".
2. Запускаем скрипт.
3. Выделяем нужные объекты или подобъекты Vertex.
4. Чтобы отключить, нажимаем кнопку Stop.
5. Чтобы обновить, нажимаем кнопку Refresh.
Кнопку Refresh нужно нажать если:
1. создать новые объекты.
2. перейти от подобъектов Vertex к выделенному объекту.
3. открыть другую сцену и в других случаях.
P.S. Создайте копию сцены перед тем, как использовать скрипт.
AEplug