Upload client_test.py as weather in utils
Activate mesh distance fields
This commit is contained in:
parent
a41bf95afd
commit
c3a89b5a57
|
@ -46,7 +46,7 @@ class Sun(object):
|
||||||
self._t %= 2.0 * math.pi
|
self._t %= 2.0 * math.pi
|
||||||
self.azimuth += 0.25 * delta_seconds
|
self.azimuth += 0.25 * delta_seconds
|
||||||
self.azimuth %= 360.0
|
self.azimuth %= 360.0
|
||||||
self.altitude = 35.0 * (math.sin(self._t) + 1.0)
|
self.altitude = -35.0 * (math.sin(self._t) + 1.0)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return 'Sun(%.2f, %.2f)' % (self.azimuth, self.altitude)
|
return 'Sun(%.2f, %.2f)' % (self.azimuth, self.altitude)
|
||||||
|
|
|
@ -0,0 +1,241 @@
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
try:
|
||||||
|
sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % (
|
||||||
|
sys.version_info.major,
|
||||||
|
sys.version_info.minor,
|
||||||
|
'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0])
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
import carla
|
||||||
|
from math import sin
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
# -------------------------------------------------
|
||||||
|
|
||||||
|
def main():
|
||||||
|
argparser = argparse.ArgumentParser(
|
||||||
|
description="CARLA weather example")
|
||||||
|
argparser.add_argument(
|
||||||
|
'--host',
|
||||||
|
metavar='H',
|
||||||
|
default='127.0.0.1',
|
||||||
|
help='IP of the host server (default: 127.0.0.1)')
|
||||||
|
argparser.add_argument(
|
||||||
|
'-p', '--port',
|
||||||
|
metavar='P',
|
||||||
|
default=2000,
|
||||||
|
type=int,
|
||||||
|
help='TCP port to listen to (default: 2000)')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--sun',
|
||||||
|
default=None,
|
||||||
|
type=str,
|
||||||
|
help='Sun position presets [day | night | sunset]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--weather',
|
||||||
|
default=None,
|
||||||
|
type=str,
|
||||||
|
help='Weather condition presets [clear | overcast | rain]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--altitude', '-alt',
|
||||||
|
metavar='A',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Sun altitude [-90 to 90]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--azimuth', '-azm',
|
||||||
|
metavar='A',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Sun azimuth [0 to 360]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--clouds', '-c',
|
||||||
|
metavar='C',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Clouds amount [0.0 to 100.0]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--rain', '-r',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Rain amount [0.0 to 100.0]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--puddles', '-pd',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Puddles amount [0.0 to 100.0]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--wind', '-w',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Wind intensity [0.0 to 100.0]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--fog', '-f',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Fog intensity [0.0 to 100.0]')
|
||||||
|
argparser.add_argument(
|
||||||
|
'--fogdist', '-fd',
|
||||||
|
default=None,
|
||||||
|
type=float,
|
||||||
|
help='Fog Distance')
|
||||||
|
argparser.add_argument(
|
||||||
|
'-s',
|
||||||
|
default=1.0,
|
||||||
|
type=float,
|
||||||
|
help='Dynamic weather time factor (default: 1.0)')
|
||||||
|
args = argparser.parse_args()
|
||||||
|
|
||||||
|
client = carla.Client(args.host, args.port)
|
||||||
|
client.set_timeout(2.0)
|
||||||
|
|
||||||
|
world = client.get_world()
|
||||||
|
|
||||||
|
weather = world.get_weather()
|
||||||
|
|
||||||
|
run_dynamic_simulation = True
|
||||||
|
|
||||||
|
#### PRESETS ###
|
||||||
|
if args.sun is not None:
|
||||||
|
## Sun Position ##
|
||||||
|
if args.sun == 'day':
|
||||||
|
weather.sun_altitude_angle = 90
|
||||||
|
weather.sun_azimuth_angle = 220.0
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
elif args.sun == 'night':
|
||||||
|
weather.sun_altitude_angle = -90
|
||||||
|
weather.sun_azimuth_angle = 220.0
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
elif args.sun == 'sunset':
|
||||||
|
weather.sun_altitude_angle = 181
|
||||||
|
weather.sun_azimuth_angle = 100
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
else:
|
||||||
|
print("[ERROR]: Command [--sun | -s] ´" + args.sun + "´ not known")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
## Weather ##
|
||||||
|
if args.weather is not None:
|
||||||
|
if args.weather == 'clear':
|
||||||
|
weather.cloudyness = 7.0
|
||||||
|
weather.precipitation = 0.0
|
||||||
|
weather.precipitation_deposits = 0.0
|
||||||
|
weather.wind_intensity = 5.0
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
elif args.weather == 'overcast':
|
||||||
|
weather.cloudyness = 80.0
|
||||||
|
weather.precipitation = 0.0
|
||||||
|
weather.precipitation_deposits = 0.0
|
||||||
|
weather.wind_intensity = 50.0
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
elif args.weather == 'rain':
|
||||||
|
weather.cloudyness = 100.0
|
||||||
|
weather.precipitation = 80.0
|
||||||
|
weather.precipitation_deposits = 90.0
|
||||||
|
weather.wind_intensity = 100.0
|
||||||
|
weather.fog = 20.0
|
||||||
|
weather.fogdist = 30.0
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
else:
|
||||||
|
print("[ERROR]: Command [--weather | -w] ´" + args.weather + "´ not known")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if args.azimuth is not None:
|
||||||
|
weather.sun_azimuth_angle = args.azimuth
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if args.altitude is not None:
|
||||||
|
weather.sun_altitude_angle = args.altitude
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if args.clouds is not None:
|
||||||
|
weather.cloudyness = args.clouds
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if args.rain is not None:
|
||||||
|
weather.precipitation = args.rain
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if args.puddles is not None:
|
||||||
|
weather.precipitation_deposits = args.puddles
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if args.wind is not None:
|
||||||
|
weather.wind_intensity = args.wind
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if args.fog is not None:
|
||||||
|
weather.fog = args.fog
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if args.fogdist is not None:
|
||||||
|
weather.fogdist = args.fogdist
|
||||||
|
run_dynamic_simulation = False
|
||||||
|
|
||||||
|
if run_dynamic_simulation:
|
||||||
|
speed_factor = args.s
|
||||||
|
update_freq = 0.000001 / speed_factor
|
||||||
|
elapsed_time = 0.0
|
||||||
|
total_time = 0.0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
timestamp = world.wait_for_tick(seconds=30.0).timestamp
|
||||||
|
elapsed_time += timestamp.delta_seconds
|
||||||
|
if elapsed_time > update_freq:
|
||||||
|
# tick -> speed_factor * elapsed_time
|
||||||
|
delta_time = speed_factor * elapsed_time
|
||||||
|
total_time += delta_time
|
||||||
|
world.set_weather(weather)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
weather.sun_altitude_angle += delta_time * 15.0
|
||||||
|
|
||||||
|
weather.sun_azimuth_angle += delta_time * 0.5
|
||||||
|
weather.sun_azimuth_angle %= 360.0
|
||||||
|
|
||||||
|
weather.cloudyness = max(0, sin(total_time/10) * 100)
|
||||||
|
|
||||||
|
weather.precipitation = max(0, sin(total_time/20) * 150 - 50)
|
||||||
|
weather.precipitation_deposits = max(0, sin(total_time/20) * 130 - 30)
|
||||||
|
weather.wind_intensity = max(30, sin(total_time/20) * 150 - 50)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
info_str = '\r' + str('Altitude: {:6.2f} Azimuth: {:6.2f} Clouds: {:4.2f} Wind: {:4.2f} Rain: {:4.2f} Puddles: {:4.2f}'.format(
|
||||||
|
weather.sun_altitude_angle * -1.0,
|
||||||
|
weather.sun_azimuth_angle,
|
||||||
|
weather.cloudyness,
|
||||||
|
weather.wind_intensity,
|
||||||
|
weather.precipitation,
|
||||||
|
weather.precipitation_deposits)) + 12 * ' '
|
||||||
|
|
||||||
|
sys.stdout.write(info_str)
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
elapsed_time = 0.0
|
||||||
|
|
||||||
|
else:
|
||||||
|
world.set_weather(weather)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -28,7 +28,7 @@ r.DefaultFeature.AutoExposure=False
|
||||||
r.CustomDepth=3
|
r.CustomDepth=3
|
||||||
r.Streaming.PoolSize=2000
|
r.Streaming.PoolSize=2000
|
||||||
r.TextureStreaming=True
|
r.TextureStreaming=True
|
||||||
r.GenerateMeshDistanceFields=False
|
r.GenerateMeshDistanceFields=True
|
||||||
r.DistanceFieldBuild.EightBit=False
|
r.DistanceFieldBuild.EightBit=False
|
||||||
r.DistanceFieldBuild.Compress=False
|
r.DistanceFieldBuild.Compress=False
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue