1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# SPDX-License-Identifier: Apache-2.0
# Copyright 2018-2022 The glTF-Blender-IO authors.
import bpy
from io_scene_gltf2.io.com.gltf2_io_extensions import Extension
from io_scene_gltf2.blender.exp import gltf2_blender_get
from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info
def export_transmission(blender_material, export_settings):
transmission_enabled = False
has_transmission_texture = False
transmission_extension = {}
transmission_slots = ()
transmission_socket = gltf2_blender_get.get_socket(blender_material, 'Transmission')
if isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked:
transmission_extension['transmissionFactor'] = transmission_socket.default_value
transmission_enabled = transmission_extension['transmissionFactor'] > 0
elif gltf2_blender_get.has_image_node_from_socket(transmission_socket):
fac = gltf2_blender_get.get_factor_from_socket(transmission_socket, kind='VALUE')
transmission_extension['transmissionFactor'] = fac if fac is not None else 1.0
has_transmission_texture = True
transmission_enabled = True
if not transmission_enabled:
return None, None
# Pack transmission channel (R).
if has_transmission_texture:
transmission_slots = (transmission_socket,)
use_actives_uvmaps = []
if len(transmission_slots) > 0:
combined_texture, use_active_uvmap, _ = gltf2_blender_gather_texture_info.gather_texture_info(
transmission_socket,
transmission_slots,
export_settings,
)
if has_transmission_texture:
transmission_extension['transmissionTexture'] = combined_texture
if use_active_uvmap:
use_actives_uvmaps.append("transmissionTexture")
return Extension('KHR_materials_transmission', transmission_extension, False), use_actives_uvmaps
|