PDA

Просмотр полной версии : Всякие настройки 3D MAX


TEST

KOTEHOK
11.10.2011, 13:18
Открыл такую тему , что бы все могли сами написать какие настройки знают, и прочитать про настройки которые не знают

Afa
11.10.2011, 17:39
Подскажите, где в 3ДМаксе настройки размеров? Это очень важно, когда моделишь для миров, указать правильную размерность (метры или километры или сантиметры).

KOTEHOK
12.10.2011, 10:34
Если модельки для броузера АВ, то не так важно какие единицы измерения установлены в Максе. Все равно потом модельку нуно конвертить через какой нить конвертор в формат X, RWX. Например через Accutrans. Так вот в нем и задаются окончательные размеры модельки. А при перемещении модельки из макса в аккутранс через форматы 3ds wrml obj, даже не угадаеш .

KOTEHOK
12.10.2011, 11:03
Но вообщето, когда моделишь в Максе , и особенно если это что то реальное, то лучше устанавливать в настройках единицы измерения реальные для модельки этого объекта. Чтобы по сетке можно было ориентироваться в масштабе. Основные единицы можно устанавливать и менять в любое время в процессе работы. Для этого в верхней строке с меню (пока без картинок, в винде еще неустановлен Макс) выбираем "Customize" -> "Units Setup" тут в выпадающем меню и выбираем к примеру для модельки человечка Сантиметры и делаем его в натуральную величину, для ланшафта можно километры, для модельки которая в реале меньше 1 метра, лучше выбирать милиметры. На этой же панели есть кнопка "System Unit Setup" , тут устанавливаются единицы измерения которые будут определять все числовые операции. Например кода делаете "примитив" задавая размеры числами. А так же единицы измерения тут, повлияют на отображение размеров сетки в видовых экранах. Лучше конечно когда единицы в этой панели и предыдущей совпадают, но можно в Систем делать и меньше, но не больше. Так же в Систем можно устанавливать и дробные единицы измерения. Например вы моделите человечка, и хотите добавить (merge) к нему "бипет"- скелет, но при добавлении он оказался больше. Но вы то чека сделали в натуральную величину. В Максе скелет масштабировать(Scale) нельзя, иначе все что с ним связано изменится (анимация например) траектории и прочее. Поэтому можно при первом Мерге измерить во сколько раз отличается моделька от скелета, удалить все добавленное, в System Unit Setup в окошечке 1unit= установить соответственное число, и снова добавить- мержить к модельке скелет.(так можно делать много раз, пока не понравиццо результат) А когда все совпало, то уже с добавленным скелетом и моделькой , изменить Sysytem Unit Setup на то значение, которое было в самом начале.

KOTEHOK
12.10.2011, 11:22
Еще нюансы связанные с единицами измерения. Бывают случаи когда вы открываете в Максе чужую модельку,а единицы измерения модельки и настроек вашего Макса несовпадают, то появляется панель с выбором единиц измерения. По умолчанию на панели установлено "Принять для этой модели System Unit" , но это часто приводит к тому , что вам придется возиться с масштабированием и прочими настройками. Лучше выбрать "File Unit Scale" , тоесть в этом случае изменятся настройки единиц измерения вашего Макса, будут как в файле. Но потом, когда вы посмотрите в каких единицах моделька, изругаеетесь матом на автора модельки ( ну и какой недоумок моделит в таких юнитах), откроете Кустомизе->Юнит сетуп и выберите свои любимые единицы измерения. (ПРЕДУПРЕЖДЕНИЕ - обозначение команд написанных латинским шрифтом, Я ПИШУ русскими буквами , так как они звучат в латинском алфавите, никаких кастамайзе и анвапов)

KOTEHOK
12.10.2011, 11:38
Следующий ньуанс связанный с единицами измерения в Максе , это такая хрень. Вы открыли какую то модельку, к примеру рипанули ее из игрухи. Зырите ее, но она мелкая. Приближаете, хотите рассмотреть, а она пропадает. Смотрите размеры, да все вроде окейно.
И вот тут снова можно воспользоваццо ручной настройкой размеров. Открываете Кустомизе - Юнит сетуп и выбираете их в 1000 раз меньше. Выделяете все объекты сцены клавиша "H" -> "All" "Select", правой кнопкой нажимаете оператор "Scale" в верхней строке с пиктограммами, в появившемся плавающем меню увеличиваете масштаб в 1000раз больший, всмысле там в процентах, так нуно в десять раз начиццо. (плавающее окошечко с менюшкой утаскиваете в сторону где немешаеццо, потому что оно всегда нуно)

KOTEHOK
12.10.2011, 12:14
Воабсчето всякие там ньуансы нуно в отдельнуйу тему. А тут токо настройки.
Когда ставлю Макс то первым делом настраиваю отображение и сохранение. По умочанию, в максе реалтайм рендеринг (отображение нанесенных текстур в супорте) сильно грубый. А когда моделишче нить, и не дурацкий интерьер с трилионами поликов (хотя для этого есть каркасы), то лучше видеть на экране все красиво затекстуренным.
Поэтому как токо установил макс, и еще нестерлась в памяти белиберда квест кода. Открываю "Customize"-> "Preference", и тут прямо в "General" количество шагов назад(если фатально ошиблись, то можно вернуццо) "Scene Undo" "Level" устанавливаю 100 (зависит от мощи компа),
Потом на вкладке "Files" "Backup Interval( minutes)" ставлю 15 минут а то достанет если моделька сложная .(зависит от надеги компа если макс часто вылетает то меньше, хотя последние версии вылетают редко)
Потом на вкладке "Viewports" -> "Configure driver" Открвыается окно "Configure Direct3D " тут в группе "Appearance Preferences" устанавливаю все галки и нажимаю кнопки с самими большими значениями.
Кроме этого уже на супорте Макса в правом нижнем углу кнопки с пиктограммами, две из них "ZoomExtensSelect" потянув за нижний правый уголок кнопки выбираю "БЕЛЫЙ" и "Arc Rotate Sub Object" тоже потянув выбираю "ЖЕЛТЫЙ", в первом случае если у вас все изображение сместилось фз куда, то выделив что то нужное и нажав на "белый кубик" это выделенное разместится на экране во всей красе максимально близко, во втором случае кода у вас что то выделено - объект, элемент, точка и тп то нажав кнопку вращения с желтым кругом, вы можете вращать выделенное относительно локального центра этого выделенного, и все не будет фз куда то улетать.

Starec
14.10.2011, 19:04
Котёнок, буквов очень много, а вопрос очень простой. Отвечаю Афе:
Не лезь в настройки юнита вобще. Всё по дефолту отлично "пляшет". Все размеры в мах измеряются, по умолчанию! в метрах.
1.72 это значит 1 метр 72 см.
1.732 = 1 метр 73.2 см, всё просто.
Из 3DsMax, если собираешься конвертить в миры, лучше всего формат *.wrl он же WRML97 (*.WRL). Он хорош тем, что в нём сохраняется прозрачность, если она была в Мах. А вобще формат не влияет на размеры обьекта. Хоть в 3ds, хоть в obj. Из акку в формат *.rwx с масштабом 10:1. То есть выставляем в акку 0.1 в нужном окне при сохранении (OSF Set To). Что касается формата *.x. Экспорт делается плагином, спецально заточеном под миры. Размеры менять не надо, аватар должен быть в 3DsMax реального размера.

Afa
14.10.2011, 21:43
Спасибо Стар за ответ.
Котенок, тебе тоже спасибо за подробное разъяснение :)

JiSt
05.06.2013, 21:20
Что бы быстро очищать редактор материалов вызываемый кнопкой "м" создайте кнопку своего макроскрипта на тулбаре. Нажав F11 вставьте в красное поле macros.run "Medit Tools" "clear_medit_slots" . Выделите его и перетащите выделенное на любой(желательно на свой созданный) туллбар. http://i.imgur.com/qINkxyW.jpg

JiSt
05.06.2013, 21:58
Размещаю свои скрипты тулбара дабы ибо... ;)

---
Удалить всё! ресет без подтверждения. Опасно!)
resetmaxfile #noprompt
---

Показать\Скрыть невидимые рёбра
try(if $.allEdges == True then ($.allEdges=False) else ($.allEdges=True))catch()
---

Если текстура с альфа каналом прозрачности то скопировать дифьюз текстуру в прозрачность
if $ != undefined do (
for Obj in $ where isValidNode obj do
(
local mat = obj.material
showTextureMap mat on
if superClassOf mat == material AND isproperty mat "diffuseMap" AND classOf mat.diffuseMap == bitMapTexture do
(
mat.opacityMap = copy mat.diffuseMap
mat.opacityMap.monoOutput = 1
mat.opacityMap.alphaSource = 0
mat.Soften = 0
mat.glossiness = 0
mat.specularLevel = 0
mat.Specular = color 224 224 224
mat.Diffuse = color 224 224 224
mat.ambient = color 224 224 224
mat.twoSided = on
ambientColor = color 64 64 64
if (maxVersion())[1] >= 13000 then (actionMan.executeAction 0 "63508")
else (actionMan.executeAction 0 "40807")
)
)
)
---

Включить костям признаки костей)
allBones = for item in $objects where classof item == BoneGeometry \
or classof item == Biped_Object \
or item.boneEnable == True collect item
select allBones
$.renderable=off
$.boneEnable=true
$.boneAutoAlign=false
---

Рендом цвет всем объектам в сцене
for obj in objects do (obj.wirecolor = color (random 0 255) (random 0 255) (random 0 255))
---

Рендом цвет выделенных
If $selection.count != undefined do
(
for obj in $selection do (obj.wirecolor = color (random 0 255) (random 0 255) (random 0 255))
)
---

Выделить точки выделенной кости в модифере Skin
try(
fn getAffectedVerts skinMod boneID=
(
vertAr=#()
numVerts=skinOps.getNumberVertices skinMod
for i = 1 to numVerts do
(
numBoneAffectVert=skinOps.GetVertexWeightCount skinMod i
for boneNum = 1 to numBoneAffectVert do
(
sysBoneID=skinOps.GetVertexWeightBoneID skinMod i boneNum
if sysBoneID==boneID then append vertAr i
)
)
vertAr
)

for x in selection do
(
curMod=modPanel.getCurrentObject()
if (classOf (curMod))==skin then
(
boneIndex=skinOps.getSelectedBone curMod
affectedVerts=getAffectedVerts curMod boneIndex
skinOps.selectVertices curMod affectedVerts
)
)
)catch()
---

JiSt
19.06.2013, 12:10
Кнопка назначает стандартные контролёры для анимации Position_XYZ и bezier_float:
for i = 1 to $selection.count do
(
$selection[i].pos.controller = Position_XYZ ()
$selection[i].pos.controller.X_Position.controller = bezier_float ()
$selection[i].pos.controller.Y_Position.controller = bezier_float ()
$selection[i].pos.controller.Z_Position.controller = bezier_float ()

$selection[i].rotation.controller = Euler_XYZ ()
$selection[i].rotation.controller.X_Rotation.controller = bezier_float ()
$selection[i].rotation.controller.Y_Rotation.controller = bezier_float ()
$selection[i].rotation.controller.Z_Rotation.controller = bezier_float ()

$selection[i].scale.controller = ScaleXYZ ()
$selection[i].scale.controller.X_Scale.controller = bezier_float ()
$selection[i].scale.controller.Y_Scale.controller = bezier_float ()
$selection[i].scale.controller.Z_Scale.controller = bezier_float ()
)


(в некоторых случаях полезны другие контролёры поэтому оставляю версию с каментами что бы не забыть)
for i = 1 to $selection.count do
(
/*
if $selection[i].pos.controller != Position_XYZ then $selection[i].pos.controller = Position_XYZ ()
if $selection[i].pos.controller.X_Position.controller != linear_float then $selection[i].pos.controller.X_Position.controller = linear_float ()
if $selection[i].pos.controller.Y_Position.controller != linear_float then $selection[i].pos.controller.Y_Position.controller = linear_float ()
if $selection[i].pos.controller.Z_Position.controller != linear_float then $selection[i].pos.controller.Z_Position.controller = linear_float ()

if $selection[i].rotation.controller != Euler_XYZ then $selection[i].rotation.controller = Euler_XYZ ()
if $selection[i].rotation.controller.X_Rotation.controller != linear_float then $selection[i].rotation.controller.X_Rotation.controller = linear_float ()
if $selection[i].rotation.controller.Y_Rotation.controller != linear_float then $selection[i].rotation.controller.Y_Rotation.controller = linear_float ()
if $selection[i].rotation.controller.Z_Rotation.controller != linear_float then $selection[i].rotation.controller.Z_Rotation.controller = linear_float ()

if $selection[i].scale.controller != ScaleXYZ then $selection[i].scale.controller = ScaleXYZ ()
if $selection[i].scale.controller.X_Scale.controller != linear_float then $selection[i].scale.controller.X_Scale.controller = linear_float ()
if $selection[i].scale.controller.Y_Scale.controller != linear_float then $selection[i].scale.controller.Y_Scale.controller = linear_float ()
if $selection[i].scale.controller.Z_Scale.controller != linear_float then $selection[i].scale.controller.Z_Scale.controller = linear_float ()
*/
$selection[i].pos.controller = Position_XYZ ()
$selection[i].pos.controller.X_Position.controller = bezier_float ()
$selection[i].pos.controller.Y_Position.controller = bezier_float ()
$selection[i].pos.controller.Z_Position.controller = bezier_float ()

$selection[i].rotation.controller = Euler_XYZ ()
$selection[i].rotation.controller.X_Rotation.controller = bezier_float ()
$selection[i].rotation.controller.Y_Rotation.controller = bezier_float ()
$selection[i].rotation.controller.Z_Rotation.controller = bezier_float ()

$selection[i].scale.controller = ScaleXYZ ()
$selection[i].scale.controller.X_Scale.controller = bezier_float ()
$selection[i].scale.controller.Y_Scale.controller = bezier_float ()
$selection[i].scale.controller.Z_Scale.controller = bezier_float ()
--$selection[i].pos.controller = linear_position ()
--$selection[i].pos.controller = Position_XYZ ()
--$selection[i].rotation.controller = linear_rotation ()
--$selection[i].rotation.controller = Euler_XYZ ()
--$selection[i].scale.controller = ScaleXYZ ()
)

TAG.Hosting — Хостинг сайтов и Регистрация Доменов