Render.ru

для новичков

таридакс

Активный участник
Рейтинг
5
Для чего нужен прозрачный канал в цвете вертексов и параметр светимости ? ДА и какой смысл в не чёрно белых вертексов, каким образом будет работать такая маска ?
 

3дв

Пользователь сайта
Рейтинг
2
Приветствую, уважаемые, подскажите пожалуйста как объект наделить видеорядом? То есть не статичной картинкой, а именно видео пустить по объекту?
 

таридакс

Активный участник
Рейтинг
5
В цвет диффузии закидываешь карту BitMap, она поддерживает определённые типы видео. И в карты настройках в свитек Time настраиваешь начало проигрывания видео на материале
 

shooter9688

Активный участник
Рейтинг
8
Задам похожий вопрос как у 3дв можно ли поставить видео на фон, будь то плоскость или на фон вьюпорта и управлять им, то есть использовать как референс для анимации?
 

таридакс

Активный участник
Рейтинг
5
Да, это возможно. Для этого в качестве карты окружения используем тот же метод что я и писал ранее. Для того что бы видео файл отображался нормально, делаем инстансную копию карты из окружения в любой эффект любого материала. Там уже настраиваем временем и типом отображения.
 

Вложения

  • 105,6 КБ Просмотров: 355
Рейтинг
82
При использовании видео, для окружения, возможно потребуется корректировка гаммы, т.к. видео может выглядеть более тёмным.
 

3дв

Пользователь сайта
Рейтинг
2
Сколько не пытался - на выходе одна и та же проблема: при попытке закинуть какое бы ни было видео на bitmap, получаю черный материал. И все... =( Видео, ессно не показывается. форматы пробовал самые разные.
 
Рейтинг
82
Можно и там(Output)а также и гаммой и ещё разными методами.Лучше конечно всё это делать в программе "композинга" но если очень хочется то луче так как на изображении .
 

Вложения

Вергов

Пользователь сайта
Рейтинг
2
Подскажыте почему когда я Импортирую анимацию в макс ее там не видно хотя она там есть??
 

таридакс

Активный участник
Рейтинг
5
Подскажыте почему когда я Импортирую анимацию в макс ее там не видно хотя она там есть??
Как вы это делаете ? к чему применяете ?
Когда задаёте такие вопросы, задавайте их развёрнуто.

Сколько не пытался - на выходе одна и та же проблема: при попытке закинуть какое бы ни было видео на bitmap, получаю черный материал. И все... =( Видео, ессно не показывается. форматы пробовал самые разные.
Всё получалось быстро и без проблем, может проблема в максе ?
 

таридакс

Активный участник
Рейтинг
5
Можно ли при помощи Viewport Canvas применить на объект уже существующую текстура, наложить её безшовно с наименьшим искажением. И вообще, в чём суть этого инструмента ?
 
Рейтинг
82
Да, можно.Просто замени (с тем же именем , форматом и размером)изображение Background. Бесшовно и с наименьшим искажением, в большей степени это зависит от практики использования данной функции.Суть инструмента заключается в раскрашивании объекта в реальном времени.Хотя и немного "тормозная"-по отношению к другим программам.Дело вкуса.
 

Eldoth

Пользователь сайта
Рейтинг
2
Здравствуйте.
Есть две модели персонажа (1й - заготовка, 2й - отмоделена одежда). Без изменений остались пальцы на руках. Модели отличаются масштабом.
Вопрос: можно ли как-нибудь подогнать масштаб редактированной модели под шаблон так, чтобы идеально/точно совпали неотредактированные части (по контрольным точкам) ?
 

igorznag

Мастер
Рейтинг
103
Здравствуйте.
Есть две модели персонажа (1й - заготовка, 2й - отмоделена одежда). Без изменений остались пальцы на руках. Модели отличаются масштабом.
Вопрос: можно ли как-нибудь подогнать масштаб редактированной модели под шаблон так, чтобы идеально/точно совпали неотредактированные части (по контрольным точкам) ?
Допустим масштаб является равномерным-Uniform.
Я взял код скрипта 3Point-Align и добавил галочку "Match uniform scale".
Пример: Запускаем скрипт.
Выполняем команду: меню Customize > Customize User Interface > вкладка Keyboard > Group=Main UI, Category=MB Tools.
Назначаем комбинацию клавиш для "3Pt Align", например клавишу "M".
Выделяем объект "редактированная модель".
Нажимаем клавишу "M".
Выбираем 3 точки на поверхности объекта "редактированная модель".
Выбираем 3 соответствующие точки на поверхности объекта "шаблон".
Открывается окно ""3Pt Align Options".
Включаем галочку "Match uniform scale" и нажимаем кнопку OK.
Код:
macroScript ThreePointAlign
ButtonText:"3Pt Align"
Category:"MB Tools"
Tooltip:"3Pt Align"
(
	struct pointdata (pos, txt, col)	-- Data structure for storing viewport marker data
	global ThreePtAlignMarkers = #()	-- viewport marker list
	global ThreePtAlignActive = false

	-- callback function that draws all viewport markers found in ThreePtAlignMarkers
	fn drawCoord = (
		gw.setTransform(Matrix3 1)
		local i
		-- print "--- Redraw"
		for i in ThreePtAlignMarkers do (
			-- print i.txt
			p = gw.hTransPoint i.pos
			gw.hText p i.txt color:i.col
			gw.hMarker p #smallHollowBox color:[255,255,255]
		)
		if ThreePtAlignMarkers.count > 1 then (
			gw.SetColor #line [255,255,0]
			gw.hPolyline #(gw.hTransPoint ThreePtAlignMarkers[1].pos, gw.hTransPoint ThreePtAlignMarkers[2].pos) false
		)
		if ThreePtAlignMarkers.count > 2 then (
			gw.SetColor #line [0,255,255]
			gw.hPolyline #(gw.hTransPoint ThreePtAlignMarkers[1].pos, gw.hTransPoint ThreePtAlignMarkers[3].pos) false
		)
		if ThreePtAlignMarkers.count > 3 then (
			gw.SetColor #line [255,0,0]
			gw.hPolyline #(gw.hTransPoint ThreePtAlignMarkers[1].pos, gw.hTransPoint ThreePtAlignMarkers[4].pos) false
		)
		if ThreePtAlignMarkers.count > 4 then (
			gw.SetColor #line [255,255,0]
			gw.hPolyline #(gw.hTransPoint ThreePtAlignMarkers[4].pos, gw.hTransPoint ThreePtAlignMarkers[5].pos) false
		)
		gw.enlargeUpdateRect #whole
		gw.updateScreen()
	)
		
	-- returns the transformation matrix which will transform a point from world into 
	-- the coordinate system derived from p1-p2 and p1-p3
	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
	)

	-- creates a temporary marker (red sphere, green box, blue box) at position p
	fn createMarker p type = (
		return case type of (
			#sphere:	(undo off Sphere pos:p radius:5 segments:8 wirecolor:[255,0,0])
			#box1:		(undo off Box pos:(p-[0,0,5]) width:10 length:10 height:10 wirecolor:[0,255,0])
			#box2:		(undo off Box pos:(p-[0,0,5]) width:10 length:10 height:10 wirecolor:[0,0,255])
		)
	)

	local myObj			-- local global variable which object should be moved
	local dialog_ok		-- local global variable with result of dialog (OK/Cancel)
	local trgtPlane, srcPlane, old_transform
	local match_scale=1
	-- Dialog for transformation after six points have been selected
	-- expects: node in myObj, original transformation in old_transform, 
	--          source and target matrix in srcPlane and trgtPlane 
	rollout option_ro "3Pt Align Options" (
		local start_transform		-- object transformation upon start of dialog
		local scale = 1
		local trans = 0
		local match_scale_val=1
		-- transformation update function including mirroring and offset
		fn transformObj = (
			myObj.transform = start_transform * (inverse trgtPlane) * transMatrix [0,0,trans] * scaleMatrix [match_scale_val,match_scale_val,match_scale_val*scale] * trgtPlane
		)
		
		-- User Interface
		label l1 "3Pt Align v1.2" align:#center
		label l2 "© 03-05 M. Breidt" align:#center
		hyperLink hl "(martin@breidt.net)" address:"mailto:martin@breidt.net" align:#center
		checkbox inv_align "Invert alignment" align:#center
		checkbox cb_match_scale "Match uniform scale" align:#center
		spinner offset_s "Z Offset:" type:#worldunits range:[-1e10, 1e10, 0] align:#center
		button ok_b "OK" across:2 width:65
		button cancel_b "Cancel" width:65
		
		-- Event Handler
		on option_ro open do (
			-- do initial transform
			myObj.transform = old_transform * (inverse srcPlane) * trgtPlane
			-- store start values
			start_transform = myObj.transform
			scale = 1
			trans = 0
			match_scale_val=1
			transformObj()
		)
		on inv_align changed checkstate do (
			scale *= -1
			transformObj()
		)
		on cb_match_scale changed checkstate do (
			if checkstate==true then match_scale_val=match_scale
			else match_scale_val=1
			transformObj()
		)
		on offset_s changed val do (
			trans = val
			transformObj()
		)
		on ok_b pressed do (
			dialog_ok = true
			format "3Pt Align done.\n"
			ThreePtAlignActive = false
			destroyDialog option_ro
		)
		on cancel_b pressed do (
			dialog_ok = false
			myObj.transform = old_transform 	-- restore original transformation
			format "\n*** 3Pt Align canceled ***\n" 			
			ThreePtAlignActive = false
			destroyDialog option_ro
		)
	)

	on isEnabled do (selection.count > 0)
	
	on isChecked do ThreePtAlignActive
	
	on execute do (
		local canceled = true	-- we assume the user has canceled the operation until we know otherwise
		local oldSnapMode = snapMode.active
		snapMode.active = true
		ThreePtAlignActive = true
		
		-- clean viewport marker list
		ThreePtAlignMarkers = #()
		unregisterRedrawViewsCallback drawCoord
		registerRedrawViewsCallback drawCoord
		
		dialog_ok = false
		if (classOf (a01 = pickPoint prompt:"Pick 1st source point" snap:#3D) == Point3) then (
			format "%\n" a01
			append ThreePtAlignMarkers (pointdata pos:a01 txt:"Point A1" col:[255,0,0])
			if (classOf (a02 = pickPoint prompt:"Pick 2nd source point" snap:#3D rubberBand:a01) == Point3) then (
				format "%\n" a02
				append ThreePtAlignMarkers (pointdata pos:a02 txt:"Point A2" col:[0,255,0])
				if (classOf (a03 = pickPoint prompt:"Pick 3rd source point" snap:#3D rubberBand:a01) == Point3) then (
					format "%\n\n" a03
					append ThreePtAlignMarkers (pointdata pos:a03 txt:"Point A3" col:[0,0,255])
					-- next 3 points
					if (classOf (b01 = pickPoint prompt:"Pick 1st destination point" snap:#3D) == Point3) then (					
						format "%\n" b01
						append ThreePtAlignMarkers (pointdata pos:b01 txt:"Point B1" col:[255,0,0])
						if (classOf (b02 = pickPoint prompt:"Pick 2nd destination point" snap:#3D rubberBand:b01) == Point3) then (
							format "%\n" b02
							append ThreePtAlignMarkers (pointdata pos:b02 txt:"Point B2" col:[0,255,0])
							if (classOf (b03 = pickPoint prompt:"Pick 3rd destination point" snap:#3D rubberBand:b01) == Point3) then (
								format "%\n" b03
								append ThreePtAlignMarkers (pointdata pos:b03 txt:"Point B3" col:[0,0,255])
								myObj = selection[1]					-- store object that will be transformed
								while (isGroupMember myObj) do 
									myObj=myObj.parent					-- find group head
								if (isValidNode myObj) then (
									old_transform = myObj.transform		-- backup current transformation for dialog cancel
									-- get local coordinate systems								
									srcPlane = localMatrix a01 a02 a03
									trgtPlane = localMatrix b01 b02 b03
									if length a02-a01!=0 then match_scale=1.0*(length (b02-b01))/(length (a02-a01))
									-- clean up viewport markers once markers have been defined
									unregisterRedrawViewsCallback drawCoord									
									-- open modeless dialog that handles transformation and options
									createDialog option_ro
									canceled = false
								) else (
									format "Error! Cannot find parent object!\n"
								) -- end: if isValidNode
							) -- end: if b03
						) -- end: if b02
					) -- end: if b01
				) -- end: if a03
			) -- end: if a02
		) -- end: if a01
		if canceled then (	-- user has not entered all 6 points
			unregisterRedrawViewsCallback drawCoord
			ThreePtAlignActive = false
			format "\n*** 3Pt Align canceled ***\n" 
		)
		snapMode.active = oldSnapMode	
	) -- on execute 
) -- macroscript
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
 

Eldoth

Пользователь сайта
Рейтинг
2
igorznag, Спасибо большое. Я вчера подустал гонять проценты.


Вопрос: есть ли в 3dsMax инструмент аналогичный bodypaint (рисование текстуры по самой 3d модели) ? Хотя бы с простым функционалом.
 
Сверху