[英]How am I be able to change the intensity of a shadow in Ursina?
For my code I am suffering from lack of realism due to lack of shadows.对于我的代码,由于缺少阴影,我缺乏真实感。 The shadows I am currently using makes every shadow black.我目前使用的阴影使每个阴影都变黑。 I want to find a way to lighten this effect.我想找到一种方法来减轻这种影响。 The code I am using looks something like this (The lighting code is close to the beginning. I put the full code because some other stuff might affect your answer):我使用的代码看起来像这样(照明代码接近开头。我放了完整的代码,因为其他一些东西可能会影响您的答案):
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
from ursina.shaders import lit_with_shadows_shader
app = Ursina()
playerWin = False
sky = Sky(texture="Sky1")
clouds = []
pivot=Entity()
DirectionalLight(parent=pivot, y=50, z=3, shadows=True, rotation=(45, -45, 45))
def update():
global playerWin
i = 0
for block in blocks:
block.x -= directions[i] * time.dt
if abs(block.x) > 5:
directions[i] *= -1
if block.intersects().hit:
player.x -= directions[i]*time.dt
i = i + 1
if player.y <= -10:
TEXT = Text(text=f"YOU GAVE IT YOUR BEST", color=color.red)
if player.z >= 48:
player.speed = 10
else:
player.speed = 20
if player.y > 56:
text = Text(text=f"WELL DONE YOU PASSED.", color=color.green)
destroy(text, 2)
text = Text(text=f"PRESS Q TO LEAVE.", color=color.green)
if player.z > 56:
playerWin = True
player = FirstPersonController(
collider="box"
)
player.x = 5
player.z = -45
player.speed = 20
key_found = False
boxes = []
x = """A DOOR HAS APPEARED IN THE MAZE ... FIND IT TO REACH THE NEXT LEVEL"""
key = Button(
position=(5, 1, -45), # position=(5, 1, -25)
color=color.red,
model="gem.obj",
origin_y=0.5,
scale=(0.2,0.2,0.2),
shader=lit_with_shadows_shader,
parent=scene)
ground = Entity(
model="plane",
texture="grass",
collider="box",
scale=(100, 1, 100)
)
exit_ = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(-5, 5, 50),
color=color.black
)
def create_border():
border1_left_half = Entity(
model="cube",
collider="box",
scale=(40, 10, 1),
position=(-30, 5, 50),
color=color.black
)
border1_right_half = Entity(
model="cube",
collider="box",
scale=(50, 10, 1),
position=(25, 5, 50),
color=color.black
)
border2 = Entity(
model="cube",
collider="box",
scale=(1, 10, 100),
position=(50, 5, 0),
color=color.black
)
border3 = Entity(
model="cube",
collider="box",
scale=(100, 10, 1),
position=(0, 5, -50),
color=color.black
)
border4 = Entity(
model="cube",
collider="box",
scale=(1, 10, 100),
position=(-50, 5, 0),
color=color.black
)
def create_maze():
wall1 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(20, 5, 45),
texture="white_cube"
)
wall2 = Entity(
model="cube",
collider="box",
scale=(40, 10, 1),
position=(0, 5, 40),
texture="white_cube"
)
wall3 = Entity(
model="cube",
collider="box",
scale=(1, 10, 20),
position=(-30, 5, 40),
texture="white_cube"
)
wall4 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(-10, 5, 35),
texture="white_cube"
)
wall5 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(-5, 5, 30),
texture="white_cube"
)
wall6 = Entity(
model="cube",
collider="box",
scale=(1, 10, 20),
position=(10, 5, 30),
texture="white_cube"
)
wall7 = Entity(
model="cube",
collider="box",
scale=(1, 10, 30),
position=(-40, 5, 25),
texture="white_cube"
)
wall8 = Entity(
model="cube",
collider="box",
scale=(40, 10, 1),
position=(-20, 5, 20),
texture="white_cube"
)
wall9 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(-20, 5, 25),
texture="white_cube"
)
wall10 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(0, 5, 15),
texture="white_cube"
)
wall11 = Entity(
model="cube",
collider="box",
scale=(1, 10, 70),
position=(30, 5, 5),
texture="white_cube"
)
wall12 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(25, 5, 30),
texture="white_cube"
)
wall13 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(35, 5, 40),
texture="white_cube"
)
wall14 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(40, 5, 35),
texture="white_cube"
)
wall15 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(35, 5, 20),
texture="white_cube"
)
wall16 = Entity(
model="cube",
collider="box",
scale=(1, 10, 20),
position=(40, 5, 10),
texture="white_cube"
)
wall17 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(15, 5, 20),
texture="white_cube"
)
wall18 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(20, 5, 15),
texture="white_cube"
)
wall19 = Entity(
model="cube",
collider="box",
scale=(40, 10, 1),
position=(-10, 5, 10),
texture="white_cube"
)
wall20 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(10, 5, 5),
texture="white_cube"
)
wall21 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(15, 5, 0),
texture="white_cube"
)
wall22 = Entity(
model="cube",
collider="box",
scale=(30, 10, 1),
position=(-35, 5, 0),
texture="white_cube"
)
wall23 = Entity(
model="cube",
collider="box",
scale=(1, 10, 30),
position=(-20, 5, -5),
texture="white_cube"
)
wall24 = Entity(
model="cube",
collider="box",
scale=(40, 10, 1),
position=(10, 5, -10),
texture="white_cube"
)
wall25 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(-0, 5, -5),
texture="white_cube"
)
wall26 = Entity(
model="cube",
collider="box",
scale=(1, 10, 40),
position=(-10, 5, -20),
texture="white_cube"
)
wall27 = Entity(
model="cube",
collider="box",
scale=(50, 10, 1),
position=(-15, 5, -30),
texture="white_cube"
)
wall28 = Entity(
model="cube",
collider="box",
scale=(1, 10, 20),
position=(-40, 5, -20),
texture="white_cube"
)
wall29 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(-35, 5, -10),
texture="white_cube"
)
wall30 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(-30, 5, -15),
texture="white_cube"
)
wall31 = Entity(
model="cube",
collider="box",
scale=(20, 10, 1),
position=(10, 5, -20),
texture="white_cube"
)
wall32 = Entity(
model="cube",
collider="box",
scale=(1, 10, 30),
position=(10, 5, -35),
texture="white_cube"
)
wall33 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(30, 5, -45),
texture="white_cube"
)
wall34 = Entity(
model="cube",
collider="box",
scale=(10, 10, 1),
position=(45, 5, -10),
texture="white_cube"
)
wall35 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(40, 5, -15),
texture="white_cube"
)
wall36 = Entity(
model="cube",
collider="box",
scale=(20, 10, 1),
position=(30, 5, -30),
texture="white_cube"
)
wall37 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(20, 5, -35),
texture="white_cube"
)
wall38 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(40, 5, -35),
texture="white_cube"
)
wall39 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(0, 5, -45),
texture="white_cube"
)
wall40 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(-20, 5, -45),
texture="white_cube"
)
wall41 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(-30, 5, -35),
texture="white_cube"
)
wall42 = Entity(
model="cube",
collider="box",
scale=(1, 10, 10),
position=(-40, 5, -45),
texture="white_cube"
)
def input(KEY):
global key_found, key, x, exit_
if key.hovered:
if KEY == "left mouse down":
if key_found == False:
key_found = True
text = Text(text=f"{x}", color=color.blue)
x = "WELL DONE ... YOU HAVE ESCAPED FOR NOW ...."
destroy(text, 2)
destroy(key)
destroy(exit_)
if KEY == "q":
app.destroy()
create_maze()
create_border()
blocks = []
directions = []
window.fullscreen = True
goal = Entity(
color=color.gold,
model='cube',
texture='white_cube',
position=(0, 11, 55+50),
scale=(10,1,10),
collider='box'
)
pillar = Entity(
color=color.green,
model='cube',
position=(0,36,58+50),
scale=(1,50,1)
)
app.run()
I tried by changing the ambient lighting but that only changed the looks and not the shadow.我尝试通过改变环境照明,但这只改变了外观而不是阴影。
You can change the shadow color like this:您可以像这样更改阴影颜色:
lit_with_shadows_shader.default_input['shadow_color'] = color.black
The color's alpha will determine how "strong" it is.颜色的 alpha 将决定它的“强度”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.