Add support for volume (OpenVDB) USD export: - Allows to export both static and animated volumes. - Supports volumes that have OpenVDB data from files or are generated in Blender with 'Mesh to Volume' modifier. - For volumes that have generated data in Blender it also exports corresponding .vdb files. Those files are saved in a new folder named "volumes". - Slightly changes the USD export UI panel. "Relative Texture Paths" becomes "Relative Paths" (and has separate UI box) as the functionality will now apply to both textures and volumes. Disabling of this option due to "Materials" checkbox being turned off has been removed. Reviewed By: sybren, makowalski Differential Revision: https://developer.blender.org/D14193 Manifest Task: T95407
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright 2019 Blender Foundation. All rights reserved. */
|
|
#pragma once
|
|
|
|
#include "IO_abstract_hierarchy_iterator.h"
|
|
#include "usd.h"
|
|
#include "usd_exporter_context.h"
|
|
|
|
#include <string>
|
|
|
|
#include <pxr/usd/usd/common.h>
|
|
#include <pxr/usd/usd/timeCode.h>
|
|
|
|
struct Depsgraph;
|
|
struct Main;
|
|
struct Object;
|
|
|
|
namespace blender::io::usd {
|
|
|
|
using blender::io::AbstractHierarchyIterator;
|
|
using blender::io::AbstractHierarchyWriter;
|
|
using blender::io::HierarchyContext;
|
|
|
|
class USDHierarchyIterator : public AbstractHierarchyIterator {
|
|
private:
|
|
const pxr::UsdStageRefPtr stage_;
|
|
pxr::UsdTimeCode export_time_;
|
|
const USDExportParams ¶ms_;
|
|
|
|
public:
|
|
USDHierarchyIterator(Main *bmain,
|
|
Depsgraph *depsgraph,
|
|
pxr::UsdStageRefPtr stage,
|
|
const USDExportParams ¶ms);
|
|
|
|
void set_export_frame(float frame_nr);
|
|
std::string get_export_file_path() const;
|
|
const pxr::UsdTimeCode &get_export_time_code() const;
|
|
|
|
virtual std::string make_valid_name(const std::string &name) const override;
|
|
|
|
protected:
|
|
virtual bool mark_as_weak_export(const Object *object) const override;
|
|
|
|
virtual AbstractHierarchyWriter *create_transform_writer(
|
|
const HierarchyContext *context) override;
|
|
virtual AbstractHierarchyWriter *create_data_writer(const HierarchyContext *context) override;
|
|
virtual AbstractHierarchyWriter *create_hair_writer(const HierarchyContext *context) override;
|
|
virtual AbstractHierarchyWriter *create_particle_writer(
|
|
const HierarchyContext *context) override;
|
|
|
|
virtual void release_writer(AbstractHierarchyWriter *writer) override;
|
|
|
|
private:
|
|
USDExporterContext create_usd_export_context(const HierarchyContext *context);
|
|
};
|
|
|
|
} // namespace blender::io::usd
|