Light

Methods: aspose.threed.entities (aspose-3d-foss)

Light este un Entity care adaugă o sursă de lumină într-o scenă 3D. Ca Camera, este atașat la un Node pentru a controla poziția și direcția sa.

class Light(Camera):

Methods

A3DObjectSceneObjectEntityCameraLight

Light moștenește de la Camera. În versiunea curentă, Light clasa însăși nu expune proprietăți suplimentare dincolo de cele moștenite de la Camera și Entity. Enumul LightType enum există pentru categorisirea luminilor, dar nu există light_type proprietate pe Light clasă.


Methods

Light(name: str = None)
NameTypeAccessDescription
namestrRead/WriteGets or sets the name.
parent_nodes``ReadGets the parent nodes.
excludedboolRead/WriteGets or sets the excluded.
parent_node``Read/WriteGets or sets the parent node.
rotation_mode``Read/WriteGets or sets the rotation mode.
near_planefloatRead/WriteGets or sets the near plane.
far_planefloatRead/WriteGets or sets the far plane.
aspectfloatRead/WriteGets or sets the aspect.
ortho_heightfloatRead/WriteGets or sets the ortho height.
up``Read/WriteGets or sets the up.
look_at``Read/WriteGets or sets the look at.
direction``Read/WriteGets or sets the direction.
target``Read/WriteGets or sets the target.
aperture_mode``Read/WriteGets or sets the aperture mode.
field_of_viewfloatRead/WriteGets or sets the field of view.
field_of_view_xfloatRead/WriteGets or sets the field of view x.
field_of_view_yfloatRead/WriteGets or sets the field of view y.
widthfloatRead/WriteGets or sets the width.
heightfloatRead/WriteGets or sets the height.
aspect_ratiofloatRead/WriteGets or sets the aspect ratio.
magnification``Read/WriteGets or sets the magnification.
projection_typestrRead/WriteGets or sets the projection type.
scene``Read/WriteGets or sets the scene.
propertiesPropertyCollectionReadGets the properties.

Methods

SignatureDescription
__init__(name: str, light_type)
move_forward(distance: float)
get_bounding_box()Returns the bounding box.
get_entity_renderer_key()Not implemented in the FOSS edition — throws at runtime. Returns the entity renderer key.
remove_property(property)
get_property(property: str)
set_property(property: str, value)Sets the property value.
find_property(property: str)

Light de asemenea moștenește toate Camera proprietăți (near_plane, far_plane, etc.), deși acestea nu sunt semnificative pentru obiectele de lumină. Notă: Light clasa nu expune un light_type proprietate în suprafața curentă a API-ului.


Valori LightType

from aspose.threed.entities import LightType
MethodsMethodsMethods
LightType.POINT"POINT"Emite lumină în mod egal în toate direcțiile dintr-un singur punct.
LightType.DIRECTIONAL"DIRECTIONAL"Raze paralele dintr-o sursă infinit de îndepărtată (cum ar fi lumina solară).
LightType.SPOT"SPOT"Fascicul în formă de con; poziția și direcția contează.
LightType.AREA"AREA"Lumină emisă dintr-o zonă rectangulară.
LightType.VOLUME"VOLUME"Lumină volumetrică/globală de iluminare.

Exemple de utilizare

Lumină punctuală

from aspose.threed import Scene, FileFormat
from aspose.threed.entities import Light, LightType

scene = Scene()

light = Light("PointLight")
node = scene.root_node.create_child_node("light", light)
node.transform.set_translation(0.0, 10.0, 0.0)

scene.save("lit-scene.glb", FileFormat.GLTF)

Lumină direcțională

from aspose.threed import Scene
from aspose.threed.entities import Light, LightType

scene = Scene()

sun = Light("Sun")
node = scene.root_node.create_child_node("sun", sun)
# Direction is controlled by the node's rotation
node.transform.set_euler_angles(-45.0, 30.0, 0.0)  # degrees

scene.save("directional-light.glb")

Adăugați atât o Cameră, cât și o Lumină

from aspose.threed import Scene, FileFormat
from aspose.threed.entities import Camera, Light, LightType, ProjectionType

scene = Scene()

# Camera
cam = Camera("Cam", ProjectionType.PERSPECTIVE)
cam.field_of_view = 60.0
cam_node = scene.root_node.create_child_node("camera", cam)
cam_node.transform.set_translation(0.0, 5.0, 15.0)

# Directional light
light = Light("DirLight")
light_node = scene.root_node.create_child_node("light", light)
light_node.transform.set_euler_angles(-30.0, 45.0, 0.0)

scene.save("camera-and-light.glb", FileFormat.GLTF)

Enumerați luminile într-o scenă importată

from aspose.threed import Scene
from aspose.threed.entities import Light

scene = Scene()
scene.open("model.glb")

def find_lights(node, depth=0):
    if isinstance(node.entity, Light):
        print(f"{'  ' * depth}Light: {node.name}")
    for child in node.child_nodes:
        find_lights(child, depth + 1)

find_lights(scene.root_node)

Vezi și

 Română