godot_voxel/doc/source/api/VoxelTool.md
2021-02-16 20:54:45 +00:00

12 KiB

VoxelTool

Inherits: Reference

Helper class to easily access and modify voxels

Description:

Abstract interface to access and edit voxels. It allows accessing individual voxels, or doing bulk operations such as carving large chunks or copy/paste boxes.

It's not a class to instantiate alone, you may get it from the voxel objects you want to work with.

Properties:

Type Name Default
int channel 0
int eraser_value 0
int mode 0
float sdf_scale 0.002
int value 0

Methods:

Return Signature
void do_box ( Vector3 begin, Vector3 end )
void do_point ( Vector3 pos )
void do_sphere ( Vector3 center, float radius )
int get_voxel ( Vector3 pos )
float get_voxel_f ( Vector3 pos )
Variant get_voxel_metadata ( Vector3 pos )
bool is_area_editable ( AABB box )
void paste ( Vector3 dst_pos, Reference src_buffer, int src_mask_value )
VoxelRaycastResult raycast ( Vector3 origin, Vector3 direction, float max_distance=10.0, int collision_mask=4294967295 )
void set_voxel ( Vector3 pos, int v )
void set_voxel_f ( Vector3 pos, float v )
void set_voxel_metadata ( Vector3 pos, Variant meta )

Enumerations:

enum Mode:

  • MODE_ADD = 0 --- When editing [enum VoxelBuffer.CHANNEL_SDF], will add matter. Useful for building.
  • MODE_REMOVE = 1 --- When editing [enum VoxelBuffer.CHANNEL_SDF], will subtract matter. Useful for digging.
  • MODE_SET = 2 --- Replace voxel values without any blending. Useful for blocky voxels.

Property Descriptions

  • int channel = 0

Set which channel will be edited. When used on a terrain node, it will default to the first available channel, based on the stream and generator.

  • int eraser_value = 0

Sets which value will be used to erase voxels when editing the enum VoxelBuffer.CHANNEL_TYPE channel in enum MODE_REMOVE mode.

Sets how do_* functions will behave. This may vary depending on the channel.

  • float sdf_scale = 0.002

When working with smooth voxels, applies a scale to the signed distance field. A high scale (1 or higher) will tend to produce blocky results, and a low scale (below 1, but not too close to zero) will tend to be smoother.

This is related to the enum VoxelBuffer.Depth configuration on voxels. For 8-bit and 16-bit, there is a limited range of values the Signed Distance Field can take, and by default it is clamped to -1..1, so the gradient can only range across 2 voxels. But when LOD is used, it is better to stretch that range over a longer distance, and this is achieved by scaling SDF values.

  • int value = 0

Sets which voxel value will be used. This is not relevant when editing enum VoxelBuffer.CHANNEL_SDF.

Method Descriptions

Operate on a rectangular cuboid section of the terrain. begin and end are inclusive. Choose operation and which voxel to use by setting value and mode before calling this function.

Generated on Feb 16, 2021