neuray API Programmer's Manual

iparticles.h File Reference

Description

Scene element Particles.

Code Example

iparticles.h

‎//*****************************************************************************
// Copyright 2023 NVIDIA Corporation. All rights reserved.
//*****************************************************************************
//*****************************************************************************

#ifndef MI_NEURAYLIB_IPARTICLES_H
#define MI_NEURAYLIB_IPARTICLES_H

#include <mi/neuraylib/iattribute_vector.h>
#include <mi/neuraylib/identifier.h>
#include <mi/neuraylib/iscene_element.h>
#include <mi/neuraylib/typedefs.h>

namespace mi {

namespace neuraylib {


enum Particle_type
{
    PARTICLE_TYPE_SPHERE,                    
    PARTICLE_TYPE_FORCE_32_BIT = 0xffffffffU //   Undocumented, for alignment only.
};


mi_static_assert( sizeof( Particle_type) == sizeof( Uint32));


class IParticles :
    public base::Interface_declare<0xd48750cf,0x179d,0x4487,0xb5,0xf8,0xac,0x8b,0x29,0x48,0xd1,0xc,
                                   neuraylib::IScene_element>
{
public:



    virtual void set_type( Particle_type particle_type) = 0;
    
    virtual Particle_type 
               get_type() const = 0;

    virtual Size 
               get_particles_size() const = 0;

    virtual Uint32 
               get_particles_element_size() const = 0;

    virtual void reserve( Size n) = 0;




    virtual Sint32 
               set_data( const Float32* data, Size n) = 0;

    virtual const Float32* get_data() const = 0;

    virtual Sint32 
               add_particle( const Float32* data) = 0;

    virtual Sint32 
               set_particle(  Size index, const Float32* data) = 0;

    virtual const Float32* get_particle( Size index) const = 0;




    virtual bool has_attribute( Mesh_attribute_name name) const = 0;

    virtual IAttribute_vector* create_attribute_vector(
        Mesh_attribute_name name, Uint32 dim = 1) = 0;

    virtual const IAttribute_vector* access_attribute_vector( Mesh_attribute_name name) const = 0;

    virtual IAttribute_vector* edit_attribute_vector( Mesh_attribute_name name) = 0;

    virtual Sint32 
               attach_attribute_vector(
        IAttribute_vector* attribute_vector) = 0;

    virtual Sint32 
               remove_attribute_vector( Mesh_attribute_name name) = 0;




    virtual Bbox3_struct 
               get_bbox() const = 0;

    virtual Bbox3_struct 
               get_tight_bbox(
        const Float64_4_4_struct& transformation_matrix) const = 0;

};
 // end group mi_neuray_leaf_nodes

} // namespace neuraylib

} // namespace mi

#endif // MI_NEURAYLIB_IPARTICLES_H

Namespaces

namespace 
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
namespace 
Namespace for the neuray API. More...

Classes

class 
Interface representing a collection of particles. More...

Enumerations

enum  {PARTICLE_TYPE_SPHERE, PARTICLE_TYPE_FORCE_32_BIT = 0xffffffffU }
Different particle types of mi::neuraylib::IParticles. More...