Introduction to Vehicle Creation/ru

Introduction to Vehicle Creation/ru

From BeamNG

Revision as of 17:22, 27 December 2018 by Mumboking (talk | contribs) (Creating Russian page that "My Kamaz" should have done instead of overwriting the English one.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Language: English  • русский

Программные инструментальные средства

Все программное обеспечение, необходимое для создания полностью функционирующего автомобиля, даже такого же качества, как и официальные транспортные средства, является бесплатным. Для этого урока я буду использовать следующие бесплатные программы:

  1. Blender (3D modeling): http://www.blender.org/download/
  2. GIMP (Texture creation): http://www.gimp.org/downloads/
  3. Notepad++ (Jbeam editing): http://notepad-plus-plus.org/download
  4. Blender Exporter Plugin: http://www.beamng.com/threads/11514-Blender-Exporter-plugin

После того, как вы установили их, пришло время настроить папку для создания автомобиля. Эта папка войдет в ваш Beamng.каталог drive/content / vehicles. Дать папке короткое имя, которое имеет отношение к автомобилю вы делаете. Для этого урока я создам простое транспортное средство на основе буксира аэропорта, поэтому я назвал папку “Tug”.


Ref0.jpg

С нашей папки на месте, мы можем открыть его и добавить все важные Jbeam файл.

Настройка Jbeam

Мы вставим следующие строки кода в новый документ:

{"Tug": 

{
    "information":{
        "authors":"B25Mitch",
        "name":"Tug",
    }
	
	"slotType" : "main",
	
	"nodes": [        
		["id", "posX", "posY", "posZ"],
		{"nodeWeight":10},
        {"frictionCoef":0.7},
        {"nodeMaterial":"|NM_METAL"},
        {"collision":true},
        {"selfCollision":true},
		
	],

  "beams": [    

		["id1:", "id2:"], 
		{"beamSpring":2000000,"beamDamp":200},
		{"beamDeform":80000,"beamStrength":"800000"},     		
		
    ],
		
}
}

Это по сути голые кости Jbeam файл, содержащий все, что нам нужно начать работу на автомобиле. Как видите, существует три основных раздела:” Информация“,” nobes “и”beams". Мы добавим данные в разделы узлы и балки позже, но пока вы можете продолжить и заменить информационные поля своим именем автора и именем проекта.

Хотя это допустимый файл Jbeam, он не содержит данных о структуре транспортного средства. Чтобы получить эти данные, мы собираемся построить структуру nobe и beam (n/b) в Blender.

Nodes and Beams

Откройте Blender и отредактируйте куб по умолчанию. Вы можете использовать его для ссылки масштабирования-каждая сторона имеет длину два метра. Имея это в виду, удалите вершины Куба и начните добавлять свои собственные, используя Ctrl-click или вытягивание (E) из других вершин. Каждая вершина станет узлом, одним из двух фундаментальных компонентов jbeam. Узлы имеют массу, но не имеют размеров. Балки соединяют узлы и обладают другими физическими свойствами, такими как жесткость и прочность. Балки будут представлены ребрами в Blender.

Продолжайте добавлять вершины и ребра, пока вы не заблокировали основную форму вашего автомобиля. Постарайтесь сохранить распределение вершин достаточно равномерным и не используйте больше сотни или около того. Можно добавить грани в модель, чтобы упростить визуализацию, но они не будут релевантны как часть структуры n/b.

Ref1.jpg

После завершения основной формы тела моего буксира в аэропорту я использовал только 48 узлов. Хотя форма выглядит правильно, в BeamNG.привод он не будет поддерживать себя, так как у него нет поперечных балок. Чтобы исправить это, нам нужно вернуться назад и убедиться, что каждая грань пересекается двумя ребрами, чтобы обеспечить жесткость посредством триангуляции. Чтобы пересечь грань, выберите две противоположные угловые вершины и нажмите F, чтобы создать ребро между ними. Также можно использовать модификатор триангуляции на вкладке модификаторы.

Ref2.jpg

После того, как все грани пересекаются двумя ребрами, вы можете выйти из режима редактирования и поместить модель чуть выше плоскости оси X-Y, так что если бы у нее были колеса, они бы просто касались плоскости. Затем примените расположение, поворот и масштаб модели с помощью Ctrl-A.

Пришло время экспортировать модель Blender в формат Jbeam. Для этого нам нужно скачать и установить очень полезный скрипт rmikebaker:

http://www.beamng.com/threads/5775-Blender-Script-to-Export-Nodes-and-Beams

С установленным скриптом теперь мы можем экспортировать любой объект mesh как структуру n/B. Выберите объект и экспортируйте его-файл должен быть сохранен рядом с файлом Blender.

Ref3.jpg

Откройте файл, который вы экспортировали и посмотрю. Он будет иметь то же имя, что и объект, из которого вы его экспортировали, поэтому, если вы не потрудились переименовать объект по умолчанию, он, вероятно, будет называться чем-то вроде Cube.jbeam. Это не полный файл jbeam, но он содержит информацию об узле и пучке, что наш предыдущий буксир.файл jbeam не хватало.

Ref4.jpg

Как вы можете видеть, каждая строка определяет имя узла (вершины в Blender), за которым следуют координаты (x, y, z) этого узла. Экспортер дал каждому узлу номер и префикс, или "nr” или" nl " в зависимости от того, на какой стороне транспортного средства узел находится. Я предпочитаю, чтобы мои префиксы узлов были простыми-по возможности одиночные Буквы-поэтому я буду использовать Find and Replace, чтобы изменить все префиксы на букву A. Теперь мы можем скопировать все линии узлов из куба.jbeam в наш фактический файл проекта, Tug.jbeam. Вставьте их в нижней части раздела “узлы”, под существующими линиями.

Ref7.jpg

Теперь мы можем сделать то же самое для балок, которые можно найти в разделе узлов в Кубе.jbeam. Балок будет значительно больше, чем узлов: обычно их число исчисляется сотнями или даже тысячами. Вставьте их в буксир.секция “балки " jbeam, под существующими линиями.

Ref8.jpg


Мы почти готовы, чтобы загрузить автомобиль в BeamNG.drive, чтобы проверить его, но Сначала нам нужно определить имя, чтобы появиться в браузере автомобиля. Для этого мы создадим небольшой текстовый файл под названием “info.json " и введите следующий текст:

{
    "Name":"Tug",
    "Author":"YourNameHere",
    "Type":"Car",
    "default_pc":"default",
    "colors":{
        "Pearl White": "1 1 1 1"
    }
}

Теперь, когда jbeam содержит узлы и балки и имя, появляющееся в селекторе транспортного средства, можно загрузить автомобиль в игре. Открыть свой собственный.драйв, перейти к одной из карт сетки и найти свой автомобиль в браузере. Поскольку для него пока нет видимой модели, вам придется нажать K, чтобы включить отладку jbeam, чтобы увидеть ее. Если все прошло хорошо, корпус автомобиля будет жесткой и самостоятельной. Если нет, вам придется вернуться назад и добавить больше соединительных кромок в Blender, реэкспортировать как jbeam и скопировать пересмотренный раздел beam в основной файл jbeam проекта. На этом этапе только узлы смогут сталкиваться с другими транспортными средствами (мы рассмотрим треугольники столкновения позже), но вы все равно можете попробовать ударить по оболочке вещами, чтобы проверить ее прочность.

Ref10.jpg

Можно также попробовать настроить свойства структуры n/b с помощью параметров файла jbeam. Существует несколько значений, которые можно настроить в узлах и сечениях балок. Для узлов можно попробовать изменить вес и коэффициент трения. Для балки, вы захотите отрегулировать beamSpring (жесткость), beamDamp, BeamDeform и значения BeamStrength. Более высокие значения beamSpring приведут к в более жестком корабле, но идут слишком высоко и jbeam станет неустойчивым и взорвется. Впрочем, вы можете уйти с более высокими значениями beamSpring если вам меньше значение beamDamp .

BeamDeform и BeamStrength определяют усилие необходимо постоянно повредить или сломать (уничтожьте) луч полностью. Было бы неплохо установить BeamStrength в infinite (“FLT_MAX”), если эта часть автомобиля специально не предназначена для чистого отрыва.

Каждый раз, когда вы вносите изменения в файл jbeam, вам нужно сохранить его и нажать Ctrl-R в BeamNG, чтобы перезагрузить автомобиль на месте.

в BlenderThese все, что вы можете продолжать настраивать позже, поэтому сейчас давайте перейдем к моделированию видимой сетки.

Моделирование и текстурирование

Ref10.5.jpg

Blender-не самая простая программа для изучения, но даже новичок первого дня должен быть в состоянии создать простую модель, подобную приведенной выше, используя основные ключевые команды: G(grab), R(rotate), S(scale) и E(extrude) для управления и добавления геометрии. Выполните ключевые команды нажатием x, y или z, чтобы ограничить действие определенной осью. Вы также, вероятно, захотите добавить модификатор разделения ребер, чтобы группы сглаживания выглядели красиво. Если это ваша первая модель, не подчеркивайте ее слишком сильно – мы просто получаем представление об основных навыках здесь.

Если вы достаточно довольны формой модели, пришло время придать ей материал и текстуру. Сначала добавьте материал из меню материалы и переименуйте его в что-то релевантное. Я назвал свой Tug_body.

Откройте редактор изображений UV и создайте новое изображение размером 1024x1024 пикселей. Это будет наша основная текстура. Теперь мы перейдем в режим редактирования, выделим все грани и нажмем U, чтобы развернуть координаты текстуры. Выберите "умный ультрафиолетовый проект" для самых лучших результатов. Со всеми гранями, все еще выбранными, откройте нашу недавно созданную текстуру из редактора изображений UV.

Ref14.jpg

Мы будем использовать функцию Blender Bake для автоматического создания простой текстуры. В меню визуализации, прокрутите вниз, чтобы испечь в самом низу, установите режим выпекать окружающего окклюзии, и нажмите большую кнопку выпекать. Blender начнет рендеринг мягких теней на текстуру, которую мы только что создали. Теперь, когда у нас есть рудиментарная текстура, созданная для нас, мы можем сохранить ее в папку проекта как .PNG-файл. Пришло время также экспортировать видимую сетку-перед этим примените вращение и масштаб, как мы сделали для структуры n/B. Кроме того, назовите объект чем-то разумным, например “Tug_body”. Выберите его в объектном режиме и используйте File > Export > Collada (по умолчанию) (.dae). Убедитесь, что включены предустановки” применить модификаторы “и” только выделение.

Ref12.jpg

Когда мы экспортировали модель .dae, он нес слот материала с его названием Tug_body, но нам нужно создать материал Torque3D, чтобы назначить этот слот. Создайте новый текстовый файл в папке проекта под названием материалами.cs и вставьте в него следующие строки:

singleton Material(Tug_body)
{
   mapTo = "Tug_body";
   diffuseMap[0] = "Tug_body.png";
   specularPower[0] = "15";
   useAnisotropic[0] = "1";
   castShadows = "1";
   translucent = "0";
   alphaTest = "0";
   alphaRef = "0";
};

Ref15.jpg

Этот файл будет использоваться для определения всех материалов на нашем автомобиле. Значение "mapTo"должно иметь точно такое же имя, как и материал Blender, который мы создали до экспорта. Значение " diffuseMap[0] “должно быть точным именем текстуры ("Tug_body.png " в данном случае), который мы запекли в Blender и сохранили в папку проекта.

Заключительная часть всей этой работы по моделированию и текстурированию для отображения в игре-это определение сетки Flexbody в файле jbeam. Для этого нам нужно добавить секцию Flexbody. Раздел Flexbody может быть очень простым, и в моем случае он содержит следующий текст:

"flexbodies": [
		["mesh", "[group]:", "nonFlexMaterials"],
		["Tug_body", ["tug_body_g"]],
	 ],	

Первый параметр-это имя сетки, имя, которое мы дали ей перед экспортом .dae. Второй-это имя группы узлов, к которой будет присоединена сетка. У нас пока нет групп узлов, поэтому давайте перейдем к разделу узлы и добавим эту строку перед первым узлом:

{"group":"tug_body_g"},

Все узлы, следующие за этой строкой, будут включены в новую группу: “tug_body_g”. Если на каком-то этапе вы добавляете узлы, которые не хотите быть частью этой группы, предшествуйте им строкой закрытия:

{"group":"”},

Ref17.jpg

Наконец-то пришло время увидеть результаты всей нашей работы по моделированию и текстурированию в игре. Если уровень все еще открыт, нажмите Ctrl-R, чтобы перезагрузить автомобиль и увидеть новую сетку flexbody:

Ref18.jpg

На этом этапе вы заметите, что текстура не является чем-то особенным, просто некоторые зернистые затенения в углах, но это легко исправить. Давайте достанем GIMP и откроем текстуру. Мы добавим новый слой, который умножится на базовое изображение и найдем свободную текстуру металла на CGTextures.com. Используйте инструмент клонировать, чтобы нарисовать текстуру металла на белой текстуре автомобиля.

Ref19.jpg

Через минуту или две работы я покрыл изображение красивым металлическим рисунком и добавил полосы опасности спереди и сзади. Перезаписать Tug_body.png и нажмите Ctrl-R, чтобы перезагрузить автомобиль, обновляя текстуру. Возможно, вам придется очистить кэш-файл в My Documents / BeamNG.привод / кэш / транспортных средств, или в некоторых случаях, перезапустить игру, чтобы заставить текстуру для обновления.

Ref20.jpg

Axles

Корпус нашего буксира завершен, но у нас пока нет ни колес, ни даже осей. Чтобы исправить это, мы вернемся к Blender и сделаем новую структуру n/b внутри предыдущей, за исключением того, что на этот раз это другой объект. Каждая ось будет состоять из четырех узлов, с дополнительным узлом с каждой стороны, чтобы держать колесо. Края (балки) будут настроены таким образом, чтобы отдельные узлы с каждой стороны могли шарнирно поворачиваться вперед и назад – это позволит управлять колесами.

Ref21.jpg

Как и в случае структуры n/b оболочки тела, примените расположение, поворот и масштаб к осям n/b и используйте сценарий экспорта для вывода информации об узле и балке. На этот раз мы переименуем префиксы узлов в “b", чтобы отличить их от узлов оболочки тела с префиксом " a".

Ref22.jpg

Скопируйте узлы и сечения балок и вставьте их в соответствующие разделы основного файла jbeam под предыдущими определениями узлов или балок. Это хорошая идея, чтобы добавить комментарий с помощью //, чтобы напомнить себе, для чего эти узлы. Можно также сделать узлы оси частью новой группы.

Ref23.jpg

Если вы сохраните файл jbeam и перезагрузите автомобиль, ось теперь будет присутствовать и в правильном месте, но не прикреплена ни к чему. Нам нужно прикрепить каждый из четырех узлов центральной оси к каждому из четырех узлов оболочки центрального тела под ним.

Ref24.jpg

Хорошей новостью является то, что нам не нужно возвращаться в Blender, чтобы сделать это – мы можем просто запомнить имена узлов и вручную ввести балки в файл jbeam, используя имена узлов. Дважды нажмите L, чтобы отобразить имена узлов. Начнем с узла b1, который должен быть присоединен к A9, a10, a21 и a22. Мы перейдем к нижней части раздела балки, оставить пробел, а затем добавить следующие строки:

["b1","a9"],
["b1","a10"],
["b1","a21"],
["b1","a22"],

Мы только что создали четыре новых луча, связывающих b1 с четырьмя узлами оболочки тела. Теперь мы сделаем то же самое для других балок оси, в общей сложности 16 соединительных балок на передней оси и 16 на задней.

Ref25.jpg

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

Hydros-Гидро

Потому что концы цапф свободны вращать вперед или назад, все нам нужно сделать прикрепить луч который может расширить или заключить контракт для того чтобы двинуть его вокруг. К счастью, такие вещи существуют, и они называются гидросе.

Ref26.jpg

Как и для flexbodies, нам нужно добавить новый раздел в jbeam для hydros. Это выглядит так:

"hydros": [
        ["id1:","id2:"],
				
	]

Традиционно раздел hydros помещен сразу под разделом лучей, хотя это строго не необходимо. Внутри секции hydros мы определим балки, перечислив начальный узел и конечный узел, а затем несколько параметров, которые контролируют скорость и количество, которое луч может расширить или сжать.

Типичное определение hydro выглядит следующим образом:

["b0","b7",{"factor":0.05,"steeringWheelLock":460,"lockDegrees":25}],

Сейчас мы оставим значения по умолчанию для steeringWheelLock и lockDegrees, потому что нас действительно интересует “фактор”. Этот параметр определяет, будет ли балка расширяться или сжиматься (в зависимости от того, положительная она или отрицательная), а значение определяет допустимую величину изменения длины.

Обычно хорошая идея дать гидросам более низкое значение весны и больше амортизировать чем окружающие лучи для избежания сверх-сильных гидрос которые могли сновать рамку корабля.

С одним гидро для каждого колеса, все 4 колеса теперь steerable. Чтобы проверить это, давайте перезагрузим автомобиль и переместим рулевое управление:

Steering.gif

Wheels-Колеса

Теперь, когда рулевое управление работает, пришло время поставить колеса на оси. Колеса автоматически генерируются из двух узлов в разделе hubWheels jbeam. Тем не менее, они также поставляются с целым рядом параметров, которые можно регулировать, большинство из которых не требуют пояснений с некоторыми знаниями о реальных колесах, в дополнение к знакомым свойствам n/b, таким как nodeWeight и beamSpring.

Раздел hubWheels может выглядеть следующим образом:

"hubWheels": [
        ["name","group","node1:","node2:","nodeS","nodeArm:","wheelDir"],
        {"enableTireSideSupportBeams":true},
         
        //общие параметры
        {"radius":0.47}, //Радиус узлов шины
        {"hubRadius":0.25}, //Радиус окружности
        {"wheelOffset":0}, //Смещение от исходного положения(влево/вправо)
        {"hubWidth":0.4}, //Ширина обода
        {"tireWidth":0.4}, //Ширина обода
        {"numRays":12}, //Количество узлов, чтобы сделать круг, больше может привести к более плавной езде, но за счет производительности, веса и стабильности
         
        //параметры концентратора
        {"hubBeamSpring":1081000, "hubBeamDamp":16},
        {"beamSpring":1081000, "beamDamp":16},
        {"hubBeamDeform":36000, "hubBeamStrength":112000},
        {"beamDeform":240000,"beamStrength":380000},
        {"hubNodeWeight":0.60}, //Вес узлов обода, чтобы получить общий вес обода, вычислите numRays X nodeWeight X 2
        {"hubNodeMaterial":"|NM_METAL"},
        {"hubFrictionCoef":0.7},
       //параметры шин 
        {"wheelTreadBeamSpring":281000,"wheelTreadBeamDamp":90,"wheelTreadBeamDeform":25000,"wheelTreadBeamStrength":34000},
        {"wheelPeripheryBeamSpring":281000,"wheelPeripheryBeamDamp":90,"wheelPeripheryBeamDeform":25000,"wheelPeripheryBeamStrength":34000},
        {"springExpansion":1081000, "dampExpansion":18},
        {"nodeWeight":0.60}, //Вес узлов шины, чтобы получить общий вес шины, вычислите numRays X nodeWeight X 2
        {"nodeMaterial":"|NM_RUBBER"},
        {"frictionCoef":1.1}, //Трение автошины для каждого узла, увеличивая добавит больше сжатия к вашему кораблю
         
        //
        {"pressurePSI":30}, //Давление в шинах в PSI
        {"maxPressurePSI":1500},
        {"reinforcementPressurePSI":30},
        {"pressureSpring":2601000},
        {"reinforcementPressureSpring":144000},
        {"pressureDamp":90},
        {"reinforcementPressureDamp":90},
         
        //фронт
		{"propulsed":0}
        {"selfCollision":false}
        {"collision":true}
        {"axleBeams":["b3","b1",]}
        ["FL", "wheel_FL_g", "b0", "b1", 9999,  "b2", 1],
        {"axleBeams":["b3","b1"]}
        ["FR", "wheel_FR_g", "b5", "b3", 9999,  "b4", -1],
        {"axleBeams":[]}
        {"enableABS":false}
        {"selfCollision":true}
		
		//задний
		{"propulsed":1}
        {"selfCollision":false}
        {"collision":true}
        {"axleBeams":["b7","b9",]}
        ["RL", "wheel_RL_g", "b7", "b6", 9999,  "b8", 1],
        {"axleBeams":["b9","b7"]}
        ["RR", "wheel_RR_g", "b9", "b11", 9999,  "b10", -1],
        {"axleBeams":[]}
        {"enableABS":false}
        {"selfCollision":true}
	],

В самом конце раздела колеса сами созданы от 2 узлов на цапфе, плюс третий узел далеко от центра который действует как пункт применения для вращающего момента. Единого определения колеса внутри раздела hubWheels выглядит так:

 ["FL", "wheel_FL_g", "b0", "b1", 9999,  "b2", 1],

Первый параметр - это имя колеса. Второй-имя группы узлов (для присоединения гибких тел). Третий и четвертый параметры-это два узла, которые проходят через центр колеса. Пятый параметр обычно не используется и может быть оставлен на уровне 9999, шестой параметр является узлом, используемым для применения крутящего момента( где будет тормозная колодка), а окончательный параметр контролирует направление колеса.

Колеса могут быть очень разными в зависимости от автомобиля, а ваш, вероятно, потребуется много изменений, чтобы соответствовать вашего автомобиля. Параметры выше были настроены для приспособления ГУЖА и результата в большом диаметре, толщиных колесах.

После того, как вы добавили колеса, вы можете перезагрузить автомобиль в игре и попробовать катить его с холма или толкать его с другим транспортным средством, хотя это будет выглядеть как что-то из Star Wars, пока мы не смоделируем некоторые видимые колеса для него.

Ref28.jpg

Для этого вернемся в Blender и добавим новый объект для переднего левого колеса, основанный на круге с 32 вершинами. Мы можем выдавливать и масштабировать круг в убедительный профиль колеса, а затем добавлять меньшие 8-вершинные экструдированные круги для колесных гаек. После добавления уникального материала и создания текстуры тем же методом, что и для тела, мы закончили первое колесо. Теперь просто скопируйте объект колеса три раза и поверните дубликаты в их позиции. Дайте каждому объекту колеса разумное имя, например WheelFL. Выберите все колеса и примените положение и вращение / масштаб, прежде чем повторно экспортировать все видимые сетки в .dae в папке проекта.

Ref29.jpg

Поскольку нам понадобится другой материал для колес, давайте откроем эти материалы.cs файл мы создали ранее и определить аналогичный материал, который использует текстуру колеса в качестве его диффузной карты. Не забудьте изменить mapTo на имя материала колеса в Blender.

Ref30.jpg

Чтобы прикрепить эти колеса сетки к колесам jbeam, просто разверните раздел flexbodies, чтобы включить новые строки, перечисляющие имя сетки колеса и соответствующую группу узлов (определенную в разделе hubWheels).

Ref30.5.jpg

Очистите кэш и перезапустите игру. Теперь ваша модель должна быть визуально дополнена текстурированными колесами. Если колеса колеблются или вращаются вокруг осей при их вращении, вернитесь в Blender и убедитесь, что сетки колес выровнены. Внесите корректировки в положение колеса, повторно примените местоположение, поворот и масштаб, а также повторный экспорт. Если расположение узлов оси не было изменено вручную после экспорта, можно просто выровнять колеса с узлами оси, чтобы обеспечить центрирование сетки.

Ref31.jpg

Engine and Transmission-Двигатель и трансмиссия

Есть только один шаг, чтобы сделать автомобиль управляемым, и это включает в себя добавление двигателя и коробки передач. Как hubWheels, раздел система содержит много уникальных параметров, большинство из которых соответствуют реальной жизни свойства двигателя. Их лучше всего исследовать, экспериментируя самостоятельно, поэтому пока мы украдем двигатель и трансмиссию Ibishu Covet, чтобы заставить колеса вращаться. Обычно раздел двигателя будет идти чуть выше раздела узлов. Вы не должны пойти над 850 на вращающий момент если вы не будете знать точно чего ваш делать.

"enginetorque":[
        ["rpm", "torque"] //Кривая крутящего момента
        [0, 0],
        [500, 60],
        [1000, 73],
        [2000, 93],
        [3000, 115],
        [4000, 132],
        [4500, 134],
        [5000, 135],
        [6000, 134],
        [7000, 114],
        [7500, 90],
    ],
    "engine":{
        "idleRPM":1000, //Холостой ход RPM
        "shiftDownRPM":3400, //Вниз перенос, для автоматического
        "shiftUpRPM":6400, //Вверх по переносу, для автоматического
        "maxRPM":7500, //Макс. об / мин для двигателя, в основном красная линия. 
        "inertia":0.08,
        "friction":16
        "brakingCoefRPS":0.15
        "burnEfficiency":0.5
        "throttleSensitivity":1.2
		
		//секция передачи
		"transmissionType":"manual", //Автоматический или ручной, установка автоматического ограничит использование ручного режима во время игры.
        "lowShiftDownRPM":1400,
        "lowShiftUpRPM":3600,
        "highShiftDownRPM":3300,
        "highShiftUpRPM":6000,
        // -1, 0 (neutral), 1, etc
        "gears":[-2.9, 0, 26.5, 13.25, 8.82, 6.625] //Gear ratios
        "clutchDuration":0.25
        "viscousCoupling":3.5
        "lockingTorqueLimit":150
        "enableLocking":true
        },

Для моего буксира я значительно изменил передаточные числа, так как у него такие большие колеса – вам, возможно, придется внести изменения в зависимости от типа транспортного средства, которое вы создаете.

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

Ref33.5.jpg

Reference Nodes-Узел ссылки

Возможно, вы заметили на этом этапе, что внешняя камера ведет себя не совсем так, как должна. Это потому, что мы еще не добавили ссылочные узлы. Давайте сделаем это сейчас.

Узлы справки препятствуют камере знать которое направление корабль указывает, и также устанавливают центральный пункт перезаряжая корабль.

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

"refNodes":[
        ["ref:", "back:", "left:", "up:"]
        ["ref0", "ref2", "ref1", "ref3"]
    ],

Для его работы нам нужно создать узлы с соответствующими именами в разделе узлы. То есть, мы должны создать узел на [0, 0, 0], узел прямо за ним, узел, прямо, налево и узла непосредственно выше. Мы могли бы вернуться в Blender для моделирования и экспорта refnodes, но это не слишком трудно выяснить, какие координаты должны быть в вашей голове. В моем случае они будут выглядеть так:


		["ref0",0.0,0.0,0.0],
		["ref1",0.2,0.0,0.0],
		["ref2",0.0,0.2,0.0],
		["ref3",0.0,0.0,0.2],

Из этого мы получаем аккуратный треугольный узор опорных узлов прямо под транспортным средством. Соедините опорные узлы корпуса с балками - тот же метод мы использовали для крепления осей.

Ref33.jpg

Collision Triangles-Треугольники Столкновения

Треугольники столкновения (coltris) являются неотъемлемой частью столкновений между транспортными средствами. Балки не могут сталкиваться-только узлы способны обнаруживать столкновения, и только coltris может сталкиваться с узлами. Без колтриса, если бы мы попытались разбить два буксира вместе, они прошли бы друг через друга.

Чтобы создать coltris, мы создадим новый раздел в самом конце файла jbeam под названием " треугольники”.

"triangles": [
		["id1:","id2:","id3:"],
		{"dragCoef":10},

],

Внутри раздела треугольники мы можем создать coltris, перечислив три окружающих узла. Узлы должны быть перечислены в направлении против часовой стрелки, чтобы Нормаль coltri указывала наружу (что приводит к более сильному обнаружению столкновений).

Пример треугольника выглядит так в Jbeam:

["a15","a7", "a1"],

Ref34.jpg

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

Conclusion-Вывод

Есть еще много элементов, участвующих в создании полного транспортного средства, включая реквизит, камеры, огни, брейк-группы, деформационные группы и, конечно, подвеску, но с основными навыками, извлеченными из этого урока, вы должны быть вполне способны понять эти концепции с помощью соответствующих страниц Wiki.

Feedback

Please get back to us with your feedback in this thread: http://www.beamng.com/threads/11131-Introduction-to-Vehicle-Creation-Feedback-Thread ford