|
Blender V4.3
|
#include <usd_reader_material.hh>
Public Member Functions | |
| USDMaterialReader (const USDImportParams ¶ms, Main *bmain) | |
| Material * | add_material (const pxr::UsdShadeMaterial &usd_material) const |
| ReportList * | reports () const |
Protected Member Functions | |
| void | import_usd_preview (Material *mtl, const pxr::UsdShadeShader &usd_shader) const |
| void | set_principled_node_inputs (bNode *principled_node, bNodeTree *ntree, const pxr::UsdShadeShader &usd_shader) const |
| bool | set_node_input (const pxr::UsdShadeInput &usd_input, bNode *dest_node, const char *dest_socket_name, bNodeTree *ntree, int column, NodePlacementContext *r_ctx, const ExtraLinkInfo &extra={}) const |
| bool | follow_connection (const pxr::UsdShadeInput &usd_input, bNode *dest_node, const char *dest_socket_name, bNodeTree *ntree, int column, NodePlacementContext *r_ctx, const ExtraLinkInfo &extra={}) const |
| void | convert_usd_uv_texture (const pxr::UsdShadeShader &usd_shader, const pxr::TfToken &usd_source_name, bNode *dest_node, const char *dest_socket_name, bNodeTree *ntree, int column, NodePlacementContext *r_ctx, const ExtraLinkInfo &extra={}) const |
| void | convert_usd_transform_2d (const pxr::UsdShadeShader &usd_shader, bNode *dest_node, const char *dest_socket_name, bNodeTree *ntree, int column, NodePlacementContext *r_ctx) const |
| void | load_tex_image (const pxr::UsdShadeShader &usd_shader, bNode *tex_image, const ExtraLinkInfo &extra={}) const |
| void | convert_usd_primvar_reader_float2 (const pxr::UsdShadeShader &usd_shader, const pxr::TfToken &usd_source_name, bNode *dest_node, const char *dest_socket_name, bNodeTree *ntree, int column, NodePlacementContext *r_ctx) const |
Protected Attributes | |
| USDImportParams | params_ |
| Main * | bmain_ |
By default, the USDMaterialReader creates a Blender material with the same name as the USD material. If the USD material has a #UsdPreviewSurface source, the Blender material's viewport display color, roughness and metallic properties are set to the corresponding #UsdPreoviewSurface inputs.
If the Import USD Preview option is enabled, the current implementation converts #UsdPreviewSurface to Blender nodes as follows:
Limitations: arbitrary primvar readers or UsdTransform2d not yet supported. For #UsdUVTexture, only the file, st and #sourceColorSpace inputs are handled.
TODO(makowalski): Investigate adding support for converting additional shaders and inputs. Supporting certain types of inputs, such as texture scale and bias, will probably require creating Blender Group nodes with the corresponding inputs.
Definition at line 90 of file usd_reader_material.hh.
| blender::io::usd::USDMaterialReader::USDMaterialReader | ( | const USDImportParams & | params, |
| Main * | bmain ) |
Definition at line 451 of file usd_reader_material.cc.
| Material * blender::io::usd::USDMaterialReader::add_material | ( | const pxr::UsdShadeMaterial & | usd_material | ) | const |
Definition at line 456 of file usd_reader_material.cc.
References BKE_material_add(), bmain_, get_usd_preview_surface(), Material::id, id_us_min(), blender::io::usd::USDImportParams::import_usd_preview, import_usd_preview(), params_, blender::io::usd::set_id_props_from_prim(), and set_viewport_material_props().
Referenced by utils::assign_materials(), and blender::io::usd::USDStageReader::import_all_materials().
|
protected |
This function creates a Blender UV Map node, under the simplifying assumption that UsdPrimvarReader_float2 shaders output UV coordinates. TODO(makowalski): investigate supporting conversion to other Blender node types (e.g., Attribute Nodes) if needed.
Definition at line 1318 of file usd_reader_material.cc.
References add_node(), bmain_, cache_node(), CLOG_ERROR, get_cached_node(), link_nodes(), LOG, blender::io::usd::NodePlacementContext::node_cache, SH_NODE_UVMAP, bNode::storage, STRNCPY, NodeShaderUVMap::uv_map, and usdtokens::varname().
Referenced by follow_connection().
|
protected |
Definition at line 1078 of file usd_reader_material.cc.
References add_node(), BKE_reportf(), bmain_, cache_node(), copy_v3_v3(), get_cached_node(), get_input(), get_input_socket(), usdtokens::in(), link_nodes(), M_PI, blender::io::usd::NodePlacementContext::node_cache, reports(), rot, usdtokens::rotation(), RPT_WARNING, usdtokens::scale(), set_node_input(), SH_NODE_MAPPING, TEXMAP_TYPE_POINT, and usdtokens::translation().
Referenced by follow_connection().
|
protected |
Definition at line 1030 of file usd_reader_material.cc.
References usdtokens::a(), add_node(), bmain_, cache_node(), CLOG_ERROR, get_cached_node(), link_nodes(), load_tex_image(), LOG, blender::io::usd::NodePlacementContext::node_cache, set_node_input(), SH_NODE_TEX_IMAGE, and usdtokens::st().
Referenced by follow_connection().
|
protected |
Follow the connected source of the USD input to create corresponding inputs for the given Blender node.
Definition at line 876 of file usd_reader_material.cc.
References usdtokens::a(), blender::io::usd::add_lessthan(), blender::io::usd::add_normal_map(), blender::io::usd::add_oneminus(), blender::io::usd::add_scale_bias(), blender::io::usd::add_scale_bias_adjust(), blender::io::usd::add_separate_color(), CLOG_ERROR, convert_usd_primvar_reader_float2(), convert_usd_transform_2d(), convert_usd_uv_texture(), invert(), link_nodes(), LOG, blender::io::usd::IntermediateNode::node, blender::io::usd::ExtraLinkInfo::opacity_threshold, blender::io::usd::IntermediateNode::sock_input_name, blender::io::usd::IntermediateNode::sock_output_name, STREQ, usdtokens::UsdPrimvarReader_float2(), usdtokens::UsdTransform2d(), and usdtokens::UsdUVTexture().
Referenced by set_node_input().
|
protected |
Create the Principled BSDF shader node network.
Definition at line 487 of file usd_reader_material.cc.
References add_node(), BKE_ntree_update_main_tree(), bmain_, CLOG_ERROR, Material::id, link_nodes(), LOG, MA_SURFACE_METHOD_FORWARD, needs_blend(), blender::bke::node_set_active(), blender::bke::node_tree_add_tree_embedded(), params_, blender::io::usd::USDImportParams::set_material_blend, set_principled_node_inputs(), SH_NODE_OUTPUT_MATERIAL, Material::surface_render_method, and Material::use_nodes.
Referenced by add_material().
|
protected |
Load the texture image node's texture from the path given by the USD shader's file input value.
Definition at line 1156 of file usd_reader_material.cc.
References add_udim_tiles(), usdtokens::auto_(), BKE_image_has_packedfile(), BKE_image_load_exists(), BKE_image_packfiles(), BLI_delete(), BLI_is_dir(), bmain_, CLOG_WARN, ELEM, blender::io::usd::ensure_usd_source_path_prop(), NodeTexImage::extension, usdtokens::file(), get_image_extension(), get_layer_handle(), get_source_color_space(), get_udim_tiles(), bNode::id, ID_BLEND_PATH, blender::io::usd::import_asset(), blender::io::usd::USDImportParams::import_textures_dir, blender::io::usd::USDImportParams::import_textures_mode, blender::io::usd::ExtraLinkInfo::is_color_corrected, blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::io::usd::is_udim_path(), LOG, params_, usdtokens::RAW(), usdtokens::raw(), reports(), SH_NODE_TEX_IMAGE, usdtokens::sRGB(), bNode::storage, STRNCPY, blender::io::usd::temp_textures_dir(), blender::io::usd::USDImportParams::tex_name_collision_mode, bNode::type, blender::io::usd::USD_TEX_IMPORT_NONE, blender::io::usd::USD_TEX_IMPORT_PACK, and blender::io::usd::USD_TEX_NAME_COLLISION_OVERWRITE.
Referenced by convert_usd_uv_texture().
|
inline |
Get the wmJobWorkerStatus-provided reports list pointer, to use with the BKE_report API.
Definition at line 102 of file usd_reader_material.hh.
References params_, wmJobWorkerStatus::reports, and blender::io::usd::USDImportParams::worker_status.
Referenced by convert_usd_transform_2d(), and load_tex_image().
|
protected |
Convert the given USD shader input to an input on the given Blender node.
Definition at line 611 of file usd_reader_material.cc.
References average(), CLOG_ERROR, CLOG_WARN, copy_v2_v2(), copy_v3_v3(), bNodeSocket::default_value, follow_connection(), bNodeSocket::idname, LOG, blender::bke::node_find_socket(), SOCK_FLOAT, SOCK_IN, SOCK_RGBA, SOCK_VECTOR, and bNodeSocket::type.
Referenced by convert_usd_transform_2d(), convert_usd_uv_texture(), and set_principled_node_inputs().
|
protected |
Definition at line 540 of file usd_reader_material.cc.
References usdtokens::clearcoat(), usdtokens::clearcoatRoughness(), bNodeSocket::default_value, usdtokens::diffuseColor(), usdtokens::emissiveColor(), get_opacity_threshold(), usdtokens::ior(), blender::io::usd::ExtraLinkInfo::is_color_corrected, usdtokens::metallic(), blender::bke::node_find_socket(), usdtokens::normal(), usdtokens::opacity(), blender::io::usd::ExtraLinkInfo::opacity_threshold, usdtokens::roughness(), set_node_input(), SOCK_IN, and usdtokens::specularColor().
Referenced by import_usd_preview().
|
protected |
Definition at line 94 of file usd_reader_material.hh.
Referenced by add_material(), convert_usd_primvar_reader_float2(), convert_usd_transform_2d(), convert_usd_uv_texture(), import_usd_preview(), and load_tex_image().
|
protected |
Definition at line 92 of file usd_reader_material.hh.
Referenced by add_material(), import_usd_preview(), load_tex_image(), and reports().