Blender V4.3
blender::io::usd::USDMaterialReader Class Reference

#include <usd_reader_material.hh>

Public Member Functions

 USDMaterialReader (const USDImportParams &params, Main *bmain)
 
Materialadd_material (const pxr::UsdShadeMaterial &usd_material) const
 
ReportListreports () 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_
 
Mainbmain_
 

Detailed Description

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:

  • #UsdPreviewSurface -> Principled BSDF
  • #UsdUVTexture -> Texture Image + Normal Map
  • UsdPrimvarReader_float2 -> UV Map

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.

Constructor & Destructor Documentation

◆ USDMaterialReader()

blender::io::usd::USDMaterialReader::USDMaterialReader ( const USDImportParams & params,
Main * bmain )

Definition at line 451 of file usd_reader_material.cc.

Member Function Documentation

◆ add_material()

◆ convert_usd_primvar_reader_float2()

void blender::io::usd::USDMaterialReader::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

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().

◆ convert_usd_transform_2d()

void blender::io::usd::USDMaterialReader::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
protected

◆ convert_usd_uv_texture()

void blender::io::usd::USDMaterialReader::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
protected

◆ follow_connection()

◆ import_usd_preview()

void blender::io::usd::USDMaterialReader::import_usd_preview ( Material * mtl,
const pxr::UsdShadeShader & usd_shader ) const
protected

◆ load_tex_image()

◆ reports()

ReportList * blender::io::usd::USDMaterialReader::reports ( ) const
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().

◆ set_node_input()

bool blender::io::usd::USDMaterialReader::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
protected

◆ set_principled_node_inputs()

Member Data Documentation

◆ bmain_

Main* blender::io::usd::USDMaterialReader::bmain_
protected

◆ params_

USDImportParams blender::io::usd::USDMaterialReader::params_
protected

Definition at line 92 of file usd_reader_material.hh.

Referenced by add_material(), import_usd_preview(), load_tex_image(), and reports().


The documentation for this class was generated from the following files: