Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб_14 Головков И.Е. 12002108

.docx
Скачиваний:
0
Добавлен:
26.06.2024
Размер:
474.16 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ БЕЛОГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ (НИУ «БелГУ») ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ

КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ

Отчёт по лабораторной работе №14 Тема работы: «Простейший автомобиль в Blender Game Engine» по дисциплине «Системы виртуальной реальности и программирование симуляторов»

Студента очного отделения

3 курса 12002108 группы

Головкова Игоря Евгеньевича

Проверила:

Доц. Игрунова С.В.

Белгород 2024

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

Ход работы:

Рисунок 1 – Созданная сцена с объектами

Рисунок 2 – Запущенная сцена с объектом

Рисунок 3 – Запущенная сцена с движущимся автомобилем

Листинг 1:

import bge

scene = bge.logic.getCurrentScene()

objList = scene.objects

car = objList["Car"]

car_ID = car.getPhysicsId()

obj2_ID = 0

constraintType = 11

vehicle_Constraint = bge.constraints.createConstraint(car_ID, obj2_ID, constraintType)

constraint_ID = vehicle_Constraint.constraint_id

vehicle = bge.constraints.getVehicleConstraint(constraint_ID)

car["Vehicle"] = vehicle

tire_FD = objList["FD"]

tire_FP = objList["FP"]

tire_RD = objList["RD"]

tire_RP = objList["RP"]

tirePos_RP = [ -2.5, -2.2, 0.0]

tirePos_FP = [ -2.5, 2.2, 0.0]

tirePos_RD = [ 2.5, -2.2, 0.0]

tirePos_FD = [ 2.5, 2.2 , 0.0]

suspension_Angle = [ 0.0, 0.0, -1.0]

tireAxis = [ -1.0, 0.0, 0.0]

suspensionHeight_FD = 0.2

suspensionHeight_FP = 0.2

suspensionHeight_RD = 0.2

suspensionHeight_RP = 0.2

tireRadius_FD = 1

tireRadius_FP = 1

tireRadius_RD = 1

tireRadius_RP = 1

tireSteer_FD = True

tireSteer_FP = True

tireSteer_RD = False

tireSteer_RP = False

vehicle.addWheel( tire_FD, tirePos_FD, suspension_Angle, tireAxis, suspensionHeight_FD, tireRadius_FD, tireSteer_FD )

vehicle.addWheel( tire_FP, tirePos_FP, suspension_Angle, tireAxis, suspensionHeight_FP, tireRadius_FP, tireSteer_FP )

vehicle.addWheel( tire_RD, tirePos_RD, suspension_Angle, tireAxis, suspensionHeight_RD, tireRadius_RD, tireSteer_RD )

vehicle.addWheel( tire_RP, tirePos_RP, suspension_Angle, tireAxis, suspensionHeight_RP, tireRadius_RP, tireSteer_RP )

grip_0 = 30.0

grip_1 = 30.0

grip_2 = 30.0

grip_3 = 30.0

vehicle.setTyreFriction(grip_0, 0)

vehicle.setTyreFriction(grip_1, 1)

vehicle.setTyreFriction(grip_2, 2)

vehicle.setTyreFriction(grip_3, 3)

compression_0 = 6.0

compression_1 = 6.0

compression_2 = 6.0

compression_3 = 6.0

vehicle.setSuspensionCompression(compression_0, 0)

vehicle.setSuspensionCompression(compression_1, 1)

vehicle.setSuspensionCompression(compression_2, 2)

vehicle.setSuspensionCompression(compression_3, 3)

damp_0 = 5.0

damp_1 = 5.0

damp_2 = 5.0

damp_3 = 5.0

vehicle.setSuspensionDamping(damp_0, 0)

vehicle.setSuspensionDamping(damp_1, 1)

vehicle.setSuspensionDamping(damp_2, 2)

vehicle.setSuspensionDamping(damp_3, 3)

stiffness_0 = 12.5

stiffness_1 = 12.5

stiffness_2 = 12.5

stiffness_3 = 12.5

vehicle.setSuspensionStiffness(stiffness_0, 0)

vehicle.setSuspensionStiffness(stiffness_1, 1)

vehicle.setSuspensionStiffness(stiffness_2, 2)

vehicle.setSuspensionStiffness(stiffness_3, 3)

roll_0 = 0.15

roll_1 = 0.15

roll_2 = 0.15

roll_3 = 0.15

vehicle.setRollInfluence( roll_0, 0)

vehicle.setRollInfluence( roll_1, 1)

vehicle.setRollInfluence( roll_2, 2)

vehicle.setRollInfluence( roll_3, 3)

Листинг 2:

import bge

scene = bge.logic.getCurrentScene()

controller = bge.logic.getCurrentController()

brake = controller.sensors["Brake"]

emergency = controller.sensors["EBrake"]

gas = controller.sensors["Gas"]

reverse = controller.sensors["Reverse"]

steerLeft = controller.sensors["Left"]

steerRight = controller.sensors["Right"]

objList = scene.objects

car = objList["Car"]

vehicle = car["Vehicle"]

brakeAmount = 40.0

ebrakeAmount = 100.0

if emergency.positive == True:

front_Brake = 0.0

back_Brake = ebrakeAmount

brakes = True

elif brake.positive == True and reverse.positive == False:

front_Brake = brakeAmount

back_Brake = brakeAmount

brakes = True

else:

front_Brake = 0.0

back_Brake = 0.0

brakes = False

vehicle.applyBraking(front_Brake,0)

vehicle.applyBraking(front_Brake,1)

vehicle.applyBraking(back_Brake,2)

vehicle.applyBraking(back_Brake,3)

reversePower=100.0

gasPower = 400.0

if brakes == True:

power = 0.0

elif reverse.positive == True:

power = reversePower

elif gas.positive == True:

power = -gasPower

else:

power = 0.0

vehicle.applyEngineForce(power,0)

vehicle.applyEngineForce(power,1)

vehicle.applyEngineForce(power,2)

vehicle.applyEngineForce(power,3)

turn = 0.3

if steerLeft.positive == True:

turn = turn

elif steerRight.positive == True:

turn = -turn

else:

turn = 0.0

vehicle.setSteeringValue(turn,0)

vehicle.setSteeringValue(turn,1)

Вывод: в ходе лабораторной работы было реализовано движение автомобиля.