Просмотр полной версии : Всякие настройки 3D MAX
Открыл такую тему , что бы все могли сами написать какие настройки знают, и прочитать про настройки которые не знают
Подскажите, где в 3ДМаксе настройки размеров? Это очень важно, когда моделишь для миров, указать правильную размерность (метры или километры или сантиметры).
Если модельки для броузера АВ, то не так важно какие единицы измерения установлены в Максе. Все равно потом модельку нуно конвертить через какой нить конвертор в формат X, RWX. Например через Accutrans. Так вот в нем и задаются окончательные размеры модельки. А при перемещении модельки из макса в аккутранс через форматы 3ds wrml obj, даже не угадаеш .
Но вообщето, когда моделишь в Максе , и особенно если это что то реальное, то лучше устанавливать в настройках единицы измерения реальные для модельки этого объекта. Чтобы по сетке можно было ориентироваться в масштабе. Основные единицы можно устанавливать и менять в любое время в процессе работы. Для этого в верхней строке с меню (пока без картинок, в винде еще неустановлен Макс) выбираем "Customize" -> "Units Setup" тут в выпадающем меню и выбираем к примеру для модельки человечка Сантиметры и делаем его в натуральную величину, для ланшафта можно километры, для модельки которая в реале меньше 1 метра, лучше выбирать милиметры. На этой же панели есть кнопка "System Unit Setup" , тут устанавливаются единицы измерения которые будут определять все числовые операции. Например кода делаете "примитив" задавая размеры числами. А так же единицы измерения тут, повлияют на отображение размеров сетки в видовых экранах. Лучше конечно когда единицы в этой панели и предыдущей совпадают, но можно в Систем делать и меньше, но не больше. Так же в Систем можно устанавливать и дробные единицы измерения. Например вы моделите человечка, и хотите добавить (merge) к нему "бипет"- скелет, но при добавлении он оказался больше. Но вы то чека сделали в натуральную величину. В Максе скелет масштабировать(Scale) нельзя, иначе все что с ним связано изменится (анимация например) траектории и прочее. Поэтому можно при первом Мерге измерить во сколько раз отличается моделька от скелета, удалить все добавленное, в System Unit Setup в окошечке 1unit= установить соответственное число, и снова добавить- мержить к модельке скелет.(так можно делать много раз, пока не понравиццо результат) А когда все совпало, то уже с добавленным скелетом и моделькой , изменить Sysytem Unit Setup на то значение, которое было в самом начале.
Еще нюансы связанные с единицами измерения. Бывают случаи когда вы открываете в Максе чужую модельку,а единицы измерения модельки и настроек вашего Макса несовпадают, то появляется панель с выбором единиц измерения. По умолчанию на панели установлено "Принять для этой модели System Unit" , но это часто приводит к тому , что вам придется возиться с масштабированием и прочими настройками. Лучше выбрать "File Unit Scale" , тоесть в этом случае изменятся настройки единиц измерения вашего Макса, будут как в файле. Но потом, когда вы посмотрите в каких единицах моделька, изругаеетесь матом на автора модельки ( ну и какой недоумок моделит в таких юнитах), откроете Кустомизе->Юнит сетуп и выберите свои любимые единицы измерения. (ПРЕДУПРЕЖДЕНИЕ - обозначение команд написанных латинским шрифтом, Я ПИШУ русскими буквами , так как они звучат в латинском алфавите, никаких кастамайзе и анвапов)
Следующий ньуанс связанный с единицами измерения в Максе , это такая хрень. Вы открыли какую то модельку, к примеру рипанули ее из игрухи. Зырите ее, но она мелкая. Приближаете, хотите рассмотреть, а она пропадает. Смотрите размеры, да все вроде окейно.
И вот тут снова можно воспользоваццо ручной настройкой размеров. Открываете Кустомизе - Юнит сетуп и выбираете их в 1000 раз меньше. Выделяете все объекты сцены клавиша "H" -> "All" "Select", правой кнопкой нажимаете оператор "Scale" в верхней строке с пиктограммами, в появившемся плавающем меню увеличиваете масштаб в 1000раз больший, всмысле там в процентах, так нуно в десять раз начиццо. (плавающее окошечко с менюшкой утаскиваете в сторону где немешаеццо, потому что оно всегда нуно)
Воабсчето всякие там ньуансы нуно в отдельнуйу тему. А тут токо настройки.
Когда ставлю Макс то первым делом настраиваю отображение и сохранение. По умочанию, в максе реалтайм рендеринг (отображение нанесенных текстур в супорте) сильно грубый. А когда моделишче нить, и не дурацкий интерьер с трилионами поликов (хотя для этого есть каркасы), то лучше видеть на экране все красиво затекстуренным.
Поэтому как токо установил макс, и еще нестерлась в памяти белиберда квест кода. Открываю "Customize"-> "Preference", и тут прямо в "General" количество шагов назад(если фатально ошиблись, то можно вернуццо) "Scene Undo" "Level" устанавливаю 100 (зависит от мощи компа),
Потом на вкладке "Files" "Backup Interval( minutes)" ставлю 15 минут а то достанет если моделька сложная .(зависит от надеги компа если макс часто вылетает то меньше, хотя последние версии вылетают редко)
Потом на вкладке "Viewports" -> "Configure driver" Открвыается окно "Configure Direct3D " тут в группе "Appearance Preferences" устанавливаю все галки и нажимаю кнопки с самими большими значениями.
Кроме этого уже на супорте Макса в правом нижнем углу кнопки с пиктограммами, две из них "ZoomExtensSelect" потянув за нижний правый уголок кнопки выбираю "БЕЛЫЙ" и "Arc Rotate Sub Object" тоже потянув выбираю "ЖЕЛТЫЙ", в первом случае если у вас все изображение сместилось фз куда, то выделив что то нужное и нажав на "белый кубик" это выделенное разместится на экране во всей красе максимально близко, во втором случае кода у вас что то выделено - объект, элемент, точка и тп то нажав кнопку вращения с желтым кругом, вы можете вращать выделенное относительно локального центра этого выделенного, и все не будет фз куда то улетать.
Котёнок, буквов очень много, а вопрос очень простой. Отвечаю Афе:
Не лезь в настройки юнита вобще. Всё по дефолту отлично "пляшет". Все размеры в мах измеряются, по умолчанию! в метрах.
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 реального размера.
Спасибо Стар за ответ.
Котенок, тебе тоже спасибо за подробное разъяснение :)
Что бы быстро очищать редактор материалов вызываемый кнопкой "м" создайте кнопку своего макроскрипта на тулбаре. Нажав F11 вставьте в красное поле macros.run "Medit Tools" "clear_medit_slots" . Выделите его и перетащите выделенное на любой(желательно на свой созданный) туллбар. http://i.imgur.com/qINkxyW.jpg
Размещаю свои скрипты тулбара дабы ибо... ;)
---
Удалить всё! ресет без подтверждения. Опасно!)
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()
---
Кнопка назначает стандартные контролёры для анимации 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 ()
)