implement model loading
292
alloc.cpp
Normal file
@ -0,0 +1,292 @@
|
||||
constexpr u64 DEFAULT_ALIGNMENT = sizeof(void*);
|
||||
|
||||
struct ArenaPool
|
||||
{
|
||||
ArenaPool *next;
|
||||
u8 *buffer;
|
||||
u64 used;
|
||||
u64 length;
|
||||
};
|
||||
|
||||
struct Arena
|
||||
{
|
||||
ArenaPool *pool;
|
||||
u64 default_size;
|
||||
u64 active_pool;
|
||||
};
|
||||
|
||||
struct TempArena
|
||||
{
|
||||
Arena *arena;
|
||||
ArenaPool *start_pool;
|
||||
u64 start_pos;
|
||||
};
|
||||
|
||||
struct Scratch
|
||||
{
|
||||
Arena *arena[2];
|
||||
u64 index;
|
||||
bool init;
|
||||
};
|
||||
|
||||
Scratch g_scratch;
|
||||
|
||||
void *
|
||||
Malloc(usize size)
|
||||
{
|
||||
void *ptr = malloc(size);
|
||||
memset(ptr, 0, size);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
void
|
||||
AddArenaPool(Arena *arena, usize size)
|
||||
{
|
||||
usize buffer_size = size+sizeof(ArenaPool);
|
||||
ArenaPool *pool = (ArenaPool *)Malloc(buffer_size);
|
||||
|
||||
pool->buffer = (u8 *)MovePtrForward(pool, sizeof(ArenaPool));
|
||||
pool->length = buffer_size - PtrSub(pool->buffer, pool);
|
||||
|
||||
pool->next = arena->pool;
|
||||
arena->pool = pool;
|
||||
}
|
||||
|
||||
Arena*
|
||||
CreateArena(usize size)
|
||||
{
|
||||
usize buffer_size = size+sizeof(Arena)+sizeof(ArenaPool);
|
||||
void *buffer = Malloc(buffer_size);
|
||||
|
||||
memset(buffer, 0, buffer_size);
|
||||
|
||||
Arena *arena = (Arena *)(buffer);
|
||||
|
||||
arena->default_size = size;
|
||||
arena->active_pool = 0;
|
||||
|
||||
buffer = MovePtrForward(buffer, sizeof(Arena));
|
||||
arena->pool = (ArenaPool *)buffer;
|
||||
|
||||
buffer = MovePtrForward(buffer, sizeof(ArenaPool));
|
||||
arena->pool->buffer = (u8 *)buffer;
|
||||
|
||||
arena->pool->length = buffer_size - PtrSub(arena->pool->buffer, arena);
|
||||
|
||||
return arena;
|
||||
}
|
||||
|
||||
TempArena
|
||||
Begin(Arena* arena)
|
||||
{
|
||||
TempArena temp_arena = { .arena = arena };
|
||||
|
||||
ArenaPool *pool = arena->pool;
|
||||
u64 pool_index = 0;
|
||||
for(;;)
|
||||
{
|
||||
assert(pool);
|
||||
|
||||
if(arena->active_pool == pool_index++)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
pool = pool->next;
|
||||
}
|
||||
|
||||
temp_arena.start_pool = pool;
|
||||
temp_arena.start_pos = pool->used;
|
||||
|
||||
return temp_arena;
|
||||
}
|
||||
|
||||
void
|
||||
End(TempArena *temp_arena)
|
||||
{
|
||||
if(temp_arena->arena)
|
||||
{
|
||||
temp_arena->start_pool->used = temp_arena->start_pos;
|
||||
ArenaPool *pool = temp_arena->start_pool->next;
|
||||
while(pool)
|
||||
{
|
||||
pool->used = 0;
|
||||
pool = pool->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T> T*
|
||||
AllocAlign(Arena* arena, usize size, usize alignment)
|
||||
{
|
||||
T *ptr = NULL;
|
||||
|
||||
uintptr buffer_pos = 0, current = 0, offset = 0;
|
||||
ArenaPool *pool = arena->pool;
|
||||
u64 selected_pool = 0;
|
||||
for(;;)
|
||||
{
|
||||
if(!pool)
|
||||
{
|
||||
if(size > arena->default_size)
|
||||
{
|
||||
size += arena->default_size;
|
||||
}
|
||||
|
||||
AddArenaPool(arena, Max(size, arena->default_size));
|
||||
pool = arena->pool;
|
||||
}
|
||||
|
||||
buffer_pos = (uintptr)pool->buffer;
|
||||
current = buffer_pos + pool->used;
|
||||
offset = AlignPow2(current, alignment) - buffer_pos;
|
||||
|
||||
if(selected_pool >= arena->active_pool && offset+size <= pool->length)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
pool = pool->next;
|
||||
selected_pool += 1;
|
||||
}
|
||||
|
||||
if(selected_pool > arena->active_pool)
|
||||
{
|
||||
arena->active_pool = selected_pool;
|
||||
}
|
||||
|
||||
ptr = (T *)((uintptr)(pool->buffer) + offset);
|
||||
pool->used = offset+size;
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
template<typename T> T*
|
||||
Alloc(Arena* arena)
|
||||
{
|
||||
return AllocAlign<T>(arena, sizeof(T), DEFAULT_ALIGNMENT);
|
||||
}
|
||||
|
||||
template<typename T> Array<T>
|
||||
Alloc(Arena* arena, u64 length)
|
||||
{
|
||||
Array<T> array;
|
||||
|
||||
array.ptr = AllocAlign<T>(arena, sizeof(T)*length, DEFAULT_ALIGNMENT);
|
||||
array.length = length;
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
template<typename T> T *
|
||||
AllocPtrArray(Arena *arena, u64 length)
|
||||
{
|
||||
return AllocAlign<T>(arena, sizeof(T)*length, DEFAULT_ALIGNMENT);
|
||||
}
|
||||
|
||||
template<typename T> Array<T>
|
||||
Alloc(TempArena temp_arena, u64 length)
|
||||
{
|
||||
return Alloc<T>(temp_arena.arena, length);
|
||||
}
|
||||
|
||||
template<typename T> T *
|
||||
Alloc(TempArena temp_arena)
|
||||
{
|
||||
return Alloc<T>(temp_arena.arena);
|
||||
}
|
||||
|
||||
template<typename T> T *
|
||||
AllocPtrArray(TempArena temp_arena, u64 length)
|
||||
{
|
||||
return AllocPtrArray<T>(temp_arena, length);
|
||||
}
|
||||
|
||||
void
|
||||
Reset(Arena* arena)
|
||||
{
|
||||
arena->active_pool = 0;
|
||||
ArenaPool *pool = arena->pool;
|
||||
while(pool)
|
||||
{
|
||||
pool->used = 0;
|
||||
memset(pool->buffer, 0, pool->length);
|
||||
pool = pool->next;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
BeginScratch(u64 size = 0)
|
||||
{
|
||||
if(!g_scratch.init)
|
||||
{
|
||||
assert(size);
|
||||
g_scratch.arena[0] = CreateArena(size);
|
||||
g_scratch.arena[1] = CreateArena(size);
|
||||
g_scratch.init = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_scratch.index = g_scratch.index%2;
|
||||
Reset(g_scratch.arena[g_scratch.index]);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T> T *
|
||||
ScratchAlloc()
|
||||
{
|
||||
return Alloc<T>(g_scratch.arena[g_scratch.index]);
|
||||
}
|
||||
|
||||
template<typename T> Array<T>
|
||||
ScratchAlloc(u64 length)
|
||||
{
|
||||
return Alloc<T>(g_scratch.arena[g_scratch.index], length);
|
||||
}
|
||||
|
||||
template<typename T> T *
|
||||
ScratchAllocPtrArray(u64 length)
|
||||
{
|
||||
return AllocPtrArray<T>(g_scratch.arena[g_scratch.index], length);
|
||||
}
|
||||
|
||||
template<typename T> T*
|
||||
Alloc()
|
||||
{
|
||||
return (T *)Malloc(sizeof(T));
|
||||
}
|
||||
|
||||
template<typename T> T *
|
||||
AllocPtrArray(u64 length)
|
||||
{
|
||||
return (T *)Malloc(sizeof(T)*length);
|
||||
}
|
||||
|
||||
template<typename T> Array<T>
|
||||
Alloc(u64 length)
|
||||
{
|
||||
Array<T> array;
|
||||
|
||||
array.ptr = (T *)Malloc(sizeof(T)*length);
|
||||
array.length = length;
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
template<typename T> void
|
||||
Free(Array<T> *array)
|
||||
{
|
||||
free(array->ptr);
|
||||
|
||||
array->ptr = NULL;
|
||||
array->length = 0;
|
||||
}
|
||||
|
||||
template<typename T> void
|
||||
Free(T **ptr)
|
||||
{
|
||||
free(*ptr);
|
||||
|
||||
*ptr = NULL;
|
||||
}
|
||||
|
||||
754
assets.cpp
Normal file
@ -0,0 +1,754 @@
|
||||
const u64 IMAGE_MAX = 1024;
|
||||
|
||||
#include <bit>
|
||||
|
||||
typedef MaterialMapIndex MMI;
|
||||
|
||||
struct MaterialMap
|
||||
{
|
||||
Vec4 color;
|
||||
f32 value;
|
||||
};
|
||||
|
||||
struct MaterialSet
|
||||
{
|
||||
MaterialMap maps[MMI_Max];
|
||||
};
|
||||
|
||||
ImageBuffer CreateDefaultTexture(u8 *ptr, u64 w, u64 h);
|
||||
MaterialSet CreateDefaultMaterialSet();
|
||||
|
||||
u8 DEFAULT_TEXTURE_DATA[32*32*4];
|
||||
const ImageBuffer DEFAULT_TEXTURE = CreateDefaultTexture(DEFAULT_TEXTURE_DATA, 32, 32);
|
||||
const MaterialSet DEFAULT_MATERIAL = CreateDefaultMaterialSet();
|
||||
|
||||
struct Vertex
|
||||
{
|
||||
Vec4 color;
|
||||
Vec4 tangent;
|
||||
Vec3 pos;
|
||||
Vec3 normal;
|
||||
Vec2 uv[2];
|
||||
};
|
||||
|
||||
struct Mesh
|
||||
{
|
||||
u32 start;
|
||||
u32 length;
|
||||
u32 index_start;
|
||||
u32 index_length;
|
||||
u32 material_index;
|
||||
};
|
||||
|
||||
struct Material
|
||||
{
|
||||
TextureID textures[MMI_Max];
|
||||
PipelineID pipeline_id;
|
||||
BufferID buffer_id;
|
||||
};
|
||||
|
||||
struct Model
|
||||
{
|
||||
ModelBuffers buffers;
|
||||
Array<Mesh> meshes;
|
||||
Array<TextureID> textures;
|
||||
Array<Material> materials;
|
||||
};
|
||||
|
||||
Array<u8>
|
||||
OpenFile(String8 file_path)
|
||||
{
|
||||
// TODO: get rid of malloc
|
||||
Array<u8> buffer = {};
|
||||
|
||||
FILE *file = fopen((char *)file_path.ptr, "rb");
|
||||
if(file)
|
||||
{
|
||||
fseek(file, 0, SEEK_END);
|
||||
int length = ftell(file);
|
||||
if(length)
|
||||
{
|
||||
buffer = Alloc<u8>(length+1);
|
||||
buffer.length = length;
|
||||
|
||||
fseek(file, 0, SEEK_SET);
|
||||
fread(buffer.ptr, 1, length, file);
|
||||
|
||||
buffer.ptr[buffer.length] = '\0';
|
||||
}
|
||||
|
||||
fflush(file);
|
||||
fclose(file);
|
||||
}
|
||||
else
|
||||
{
|
||||
perror("Unable to open file");
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
extern "C" cgltf_result
|
||||
GLTFLoadCallback(const cgltf_memory_options *memory_opts, const cgltf_file_options *file_opts, const char *path, cgltf_size *size, void **data)
|
||||
{
|
||||
cgltf_result result = cgltf_result_io_error;
|
||||
|
||||
Array<u8> file_data = OpenFile(String8(path));
|
||||
|
||||
if(file_data)
|
||||
{
|
||||
*size = (cgltf_size)file_data.length;
|
||||
*data = file_data.ptr;
|
||||
|
||||
result = cgltf_result_success;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
extern "C" void
|
||||
GLTFFreeCallback(const cgltf_memory_options *memory_opts, const cgltf_file_options *file_opts, void *data, cgltf_size size)
|
||||
{
|
||||
Free(&data);
|
||||
}
|
||||
|
||||
void
|
||||
UnloadImage(ImageBuffer* image_buffer)
|
||||
{
|
||||
stbi_image_free(image_buffer->data.ptr);
|
||||
|
||||
image_buffer->data.ptr = NULL;
|
||||
image_buffer->data.length = 0;
|
||||
}
|
||||
|
||||
MaterialSet
|
||||
CreateDefaultMaterialSet()
|
||||
{
|
||||
MaterialSet set;
|
||||
|
||||
set.maps[MMI_Albedo].color = Vec4(1.0);
|
||||
set.maps[MMI_Metallic].color = Vec4(1.0);
|
||||
|
||||
return set;
|
||||
}
|
||||
|
||||
ImageBuffer
|
||||
CreateDefaultTexture(u8 *ptr, u64 w, u64 h)
|
||||
{
|
||||
ImageBuffer image_buffer;
|
||||
|
||||
image_buffer.data.ptr = ptr;
|
||||
image_buffer.data.length = w*h*4;
|
||||
image_buffer.w = w;
|
||||
image_buffer.h = h;
|
||||
image_buffer.ch = 4;
|
||||
|
||||
u8 magenta[4] = {255, 0, 255, 255};
|
||||
u8 black[4] = {0, 0, 0, 255};
|
||||
|
||||
u64 size = w*h*4;
|
||||
u64 half = size/2;
|
||||
for(u64 i = 0; i < size; i += 32)
|
||||
{
|
||||
bool swap = i <= half;
|
||||
u8 *color0 = swap ? magenta : black;
|
||||
u8 *color1 = swap ? black : magenta;
|
||||
for(u64 j = 0; j < 16; j += 4)
|
||||
{
|
||||
ptr[i+j+0] = color0[0];
|
||||
ptr[i+j+1] = color0[1];
|
||||
ptr[i+j+2] = color0[2];
|
||||
ptr[i+j+3] = color0[3];
|
||||
|
||||
ptr[i+j+16+0] = color0[0];
|
||||
ptr[i+j+16+1] = color0[1];
|
||||
ptr[i+j+16+2] = color0[2];
|
||||
ptr[i+j+16+3] = color0[3];
|
||||
}
|
||||
}
|
||||
|
||||
return image_buffer;
|
||||
}
|
||||
|
||||
ImageBuffer
|
||||
LoadImage(void *data, i32 size)
|
||||
{
|
||||
ImageBuffer image_buffer;
|
||||
|
||||
i32 w, h, ch, desired_channels = 4;
|
||||
image_buffer.data.ptr = stbi_load_from_memory((const u8 *)data, size, &w, &h, &ch, desired_channels);
|
||||
if(w > 0 && h > 0 && ch > 0)
|
||||
{
|
||||
image_buffer.data.length = w*h*ch;
|
||||
image_buffer.w = w;
|
||||
image_buffer.h = h;
|
||||
image_buffer.ch = ch;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Failed to load image data\n");
|
||||
image_buffer.data.ptr = NULL;
|
||||
}
|
||||
|
||||
return image_buffer;
|
||||
}
|
||||
|
||||
ImageBuffer
|
||||
LoadImage(cgltf_image *asset_image, String8 texture_path)
|
||||
{
|
||||
ImageBuffer image_buffer;
|
||||
|
||||
if(asset_image)
|
||||
{
|
||||
String8 uri_path = String8(asset_image->uri);
|
||||
if(StartsWith(uri_path, String8Lit("data:")))
|
||||
{
|
||||
u32 i;
|
||||
for(i = 0; uri_path[i] != ',' && i < uri_path.length; i += 1);
|
||||
|
||||
if(uri_path[i] != 0 && i < uri_path.length-1)
|
||||
{
|
||||
u64 base64_length = strlen(asset_image->uri+i+1);
|
||||
for(; uri_path[i+base64_length] == '='; base64_length -= 1);
|
||||
|
||||
u64 bit_count = base64_length*6 - (base64_length*6)%8;
|
||||
i32 out_size = (i32)(bit_count/8);
|
||||
|
||||
void *data;
|
||||
cgltf_options options;
|
||||
options.file.read = GLTFLoadCallback;
|
||||
options.file.release = GLTFFreeCallback;
|
||||
|
||||
cgltf_result result = cgltf_load_buffer_base64(&options, out_size, asset_image->uri+i+1, &data);
|
||||
if(result == cgltf_result_success)
|
||||
{
|
||||
image_buffer = LoadImage(data, out_size);
|
||||
cgltf_free((cgltf_data *)data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("GLTF data for URI is not a valid image\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 buffer[512];
|
||||
String8 file_path = SPrintf(buffer, "%s%s", texture_path.ptr, uri_path.ptr);
|
||||
Array<u8> image_file = OpenFile(file_path);
|
||||
|
||||
image_buffer = LoadImage(image_file.ptr, (i32)image_file.length);
|
||||
|
||||
Free(&image_file);
|
||||
}
|
||||
}
|
||||
else if(asset_image->buffer_view != NULL && asset_image->buffer_view->buffer->data != NULL)
|
||||
{
|
||||
Array<u8> image_data = Alloc<u8>(asset_image->buffer_view->size);
|
||||
|
||||
i32 offset = (i32)asset_image->buffer_view->offset;
|
||||
i32 stride = (i32)asset_image->buffer_view->stride ? asset_image->buffer_view->stride : 1;
|
||||
|
||||
u64 length = asset_image->buffer_view->size - (asset_image->buffer_view->size%stride);
|
||||
u8 *buffer_data = (u8 *)(asset_image->buffer_view->buffer->data);
|
||||
|
||||
memcpy(image_data.ptr, buffer_data, length);
|
||||
|
||||
String8 mime_type = String8(asset_image->mime_type);
|
||||
|
||||
String8 accepted_types[8] = {
|
||||
String8Lit("image\\/png"), String8Lit("image/png"), String8Lit("image\\/jpeg"), String8Lit("image/jpeg"),
|
||||
String8Lit("image\\/tga"), String8Lit("image/tga"), String8Lit("image\\/bmp"), String8Lit("image/bmp"),
|
||||
};
|
||||
|
||||
bool accepted;
|
||||
for(u64 i = 0; i < Length(accepted_types); i += 1)
|
||||
{
|
||||
if(mime_type == accepted_types[i])
|
||||
{
|
||||
accepted = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(accepted)
|
||||
{
|
||||
image_buffer = LoadImage(buffer_data, length);
|
||||
}
|
||||
else printf("Unable to load image, unknown image type [%s]", mime_type.ptr);
|
||||
|
||||
Free(&image_data);
|
||||
}
|
||||
|
||||
if(image_buffer.data.ptr == NULL)
|
||||
{
|
||||
printf("Failed to load GLTF image data/file");
|
||||
}
|
||||
|
||||
return image_buffer;
|
||||
}
|
||||
|
||||
TextureID
|
||||
LoadImageToTexture(cgltf_image *asset_image, String8 texture_path)
|
||||
{
|
||||
TextureID texture_id = g_renderer.default_texture;
|
||||
ImageBuffer image_buffer = LoadImage(asset_image, texture_path);
|
||||
if(image_buffer.data.ptr)
|
||||
{
|
||||
texture_id = CreateTexture(image_buffer);
|
||||
Free(&image_buffer.data);
|
||||
}
|
||||
else Logf("Unable to load texture %s, setting default", asset_image->name);
|
||||
|
||||
return texture_id;
|
||||
}
|
||||
|
||||
TextureID FindTexture(cgltf_texture *texture, cgltf_data *data, Model *model)
|
||||
{
|
||||
TextureID result = g_renderer.default_texture;
|
||||
|
||||
for(u64 i = 0; i < data->textures_count; i += 1)
|
||||
{
|
||||
if(texture == data->textures+i)
|
||||
{
|
||||
result = model->textures[i];
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename T> T *
|
||||
GLTFBuffer(cgltf_accessor *accessor)
|
||||
{
|
||||
return (T *)(accessor->buffer_view->buffer->data) + (accessor->buffer_view->offset/sizeof(T)) + (accessor->offset/sizeof(T));
|
||||
}
|
||||
|
||||
void
|
||||
SetMeshData(Mesh *mesh, cgltf_accessor *accessor, u64 *vertex_count)
|
||||
{
|
||||
if(mesh->length == 0)
|
||||
{
|
||||
mesh->start = (u32)(*vertex_count);
|
||||
mesh->length = (u32)(accessor->count);
|
||||
(*vertex_count) += accessor->count;
|
||||
}
|
||||
}
|
||||
|
||||
#define AdvanceBuffer(T, buffer, accessor) (T *)((u8 *)(buffer) + accessor->stride)
|
||||
|
||||
void
|
||||
SetVerticesWithTransform(cgltf_accessor *accessor, Array<Vertex> vertices, Mesh *mesh, usize offset, Mat4 &world_matrix, u64 *vertex_count)
|
||||
{
|
||||
SetMeshData(mesh, accessor, vertex_count);
|
||||
|
||||
f32 *buffer = GLTFBuffer<f32>(accessor);
|
||||
for(u64 i = 0; i < mesh->length; i += 1, buffer = AdvanceBuffer(f32, buffer, accessor))
|
||||
{
|
||||
Vec3 *vtx_ptr = (Vec3 *)((u8 *)(&vertices[mesh->start+i]) + offset);
|
||||
Vec3 vertex = Vec3(buffer[0], buffer[1], buffer[2]);
|
||||
(*vtx_ptr) = Transform(vertex, world_matrix);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T> void
|
||||
SetIndices(cgltf_accessor *accessor, Array<u32> indices, Mesh *mesh)
|
||||
{
|
||||
T *buffer = GLTFBuffer<T>(accessor);
|
||||
for(u64 i = 0; i < mesh->index_length; i += 1)
|
||||
{
|
||||
indices[mesh->index_start+i] = (u32)(mesh->start + buffer[i]);
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
LoadGLTF(Arena* arena, Model* model_result, String8 file_name)
|
||||
{
|
||||
Model model = {};
|
||||
|
||||
TempArena temp_arena = {};
|
||||
Array<Vertex> vertices = {};
|
||||
Array<u32> indices = {};
|
||||
|
||||
Array<u8> file_data = OpenFile(file_name);
|
||||
assert(file_data.ptr); // TODO: handle errors
|
||||
|
||||
cgltf_options opts = {};
|
||||
cgltf_data *data = NULL;
|
||||
|
||||
opts.file.read = GLTFLoadCallback;
|
||||
opts.file.release = GLTFFreeCallback;
|
||||
|
||||
cgltf_result result = cgltf_parse(&opts, file_data.ptr, file_data.length, &data);
|
||||
if(result == cgltf_result_success)
|
||||
{
|
||||
result = cgltf_load_buffers(&opts, data, file_name.ch_ptr);
|
||||
if(result != cgltf_result_success)
|
||||
{
|
||||
Logf("LoadGLTF failure: Unable to load buffers");
|
||||
}
|
||||
|
||||
u64 primitive_count = 0, vertex_count = 0, index_count = 0;
|
||||
for(u64 i = 0; i < data->nodes_count; i += 1)
|
||||
{
|
||||
cgltf_node *node = data->nodes+i;
|
||||
|
||||
if(!node->mesh) continue;
|
||||
|
||||
for(u64 j = 0; j < node->mesh->primitives_count; j += 1)
|
||||
{
|
||||
auto p = node->mesh->primitives+j;
|
||||
if(p->type == cgltf_primitive_type_triangles)
|
||||
{
|
||||
primitive_count += 1;
|
||||
|
||||
if(p->indices && p->indices->buffer_view)
|
||||
{
|
||||
index_count += p->indices->count;
|
||||
}
|
||||
|
||||
for(u64 k = 0; k < p->attributes_count; k += 1)
|
||||
{
|
||||
if(p->attributes[k].type == cgltf_attribute_type_position)
|
||||
{
|
||||
vertex_count += p->attributes[k].data->count;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
model.meshes = Alloc<Mesh>(arena, primitive_count);
|
||||
model.textures = Alloc<TextureID>(arena, data->textures_count);
|
||||
model.materials = Alloc<Material>(arena, data->materials_count);
|
||||
|
||||
temp_arena = Begin(arena);
|
||||
String8 file_path = GetFilePath(file_name);
|
||||
|
||||
vertices = Alloc<Vertex>(temp_arena, vertex_count);
|
||||
indices = Alloc<u32>(temp_arena, index_count);
|
||||
|
||||
for(u64 i = 0; i < model.textures.length; i += 1)
|
||||
{
|
||||
model.textures[i] = LoadImageToTexture(data->textures[i].image, file_path);
|
||||
}
|
||||
|
||||
for(u64 i = 0; i < model.materials.length; i += 1)
|
||||
{
|
||||
model.materials[i].buffer_id = g_renderer.default_material;
|
||||
for(u64 j = 0; j < MMI_Max; j += 1)
|
||||
{
|
||||
model.materials[i].textures[j] = g_renderer.default_texture;
|
||||
}
|
||||
}
|
||||
|
||||
for(u64 i = 0; i < data->materials_count; i += 1)
|
||||
{
|
||||
MaterialSet material_set;
|
||||
|
||||
TextureID *textures = model.materials[i].textures;
|
||||
cgltf_material *material = data->materials+i;
|
||||
|
||||
if(material->has_pbr_metallic_roughness)
|
||||
{
|
||||
auto pbr_mr = &material->pbr_metallic_roughness;
|
||||
if(pbr_mr->base_color_texture.texture)
|
||||
{
|
||||
textures[MMI_Albedo] = FindTexture(pbr_mr->base_color_texture.texture, data, &model);
|
||||
}
|
||||
|
||||
memcpy(material_set.maps[MMI_Albedo].color.v, pbr_mr->base_color_factor, sizeof(f32)*4);
|
||||
|
||||
if(pbr_mr->metallic_roughness_texture.texture)
|
||||
{
|
||||
TextureID mr_texture = FindTexture(pbr_mr->metallic_roughness_texture.texture, data, &model);
|
||||
|
||||
textures[MMI_Metallic] = mr_texture;
|
||||
textures[MMI_Roughness] = mr_texture;
|
||||
|
||||
material_set.maps[MMI_Metallic].value = pbr_mr->metallic_factor;
|
||||
material_set.maps[MMI_Roughness].value = pbr_mr->roughness_factor;
|
||||
}
|
||||
|
||||
if(material->normal_texture.texture)
|
||||
{
|
||||
textures[MMI_Normal] = FindTexture(material->normal_texture.texture, data, &model);
|
||||
}
|
||||
|
||||
if(material->occlusion_texture.texture)
|
||||
{
|
||||
textures[MMI_Occlusion] = FindTexture(material->occlusion_texture.texture, data, &model);
|
||||
}
|
||||
|
||||
if(material->emissive_texture.texture)
|
||||
{
|
||||
textures[MMI_Emission] = FindTexture(material->emissive_texture.texture, data, &model);
|
||||
|
||||
memcpy(material_set.maps[MMI_Emission].color.v, material->emissive_factor, sizeof(f32)*3);
|
||||
material_set.maps[MMI_Emission].color.a = 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
model.materials[i].buffer_id = CreateBuffer(&material_set);
|
||||
}
|
||||
|
||||
u64 mesh_index = 0, point_index = 0;
|
||||
vertex_count = 0;
|
||||
for(u64 i = 0; i < data->nodes_count; i += 1)
|
||||
{
|
||||
cgltf_node *node = data->nodes+i;
|
||||
cgltf_mesh *mesh = node->mesh;
|
||||
|
||||
if(!mesh) continue;
|
||||
|
||||
cgltf_float world_transform[16];
|
||||
cgltf_node_transform_world(node, world_transform);
|
||||
|
||||
Mat4 world_matrix = Mat4(world_transform);
|
||||
|
||||
for(u64 p = 0; p < mesh->primitives_count; p += 1)
|
||||
{
|
||||
if(mesh->primitives[p].type != cgltf_primitive_type_triangles)
|
||||
{
|
||||
Logf("Unable to process primitive type [%d]", mesh->primitives[p].type);
|
||||
continue;
|
||||
}
|
||||
|
||||
auto prim = mesh->primitives+p;
|
||||
Mesh *model_mesh = model.meshes.ptr+mesh_index;
|
||||
for(u64 j = 0; j < prim->attributes_count; j += 1)
|
||||
{
|
||||
cgltf_accessor *accessor = prim->attributes[j].data;
|
||||
switch(prim->attributes[j].type)
|
||||
{
|
||||
case cgltf_attribute_type_position:
|
||||
{
|
||||
SetVerticesWithTransform(accessor, vertices, model_mesh, offsetof(Vertex, pos), world_matrix, &vertex_count);
|
||||
} break;
|
||||
case cgltf_attribute_type_normal:
|
||||
{
|
||||
SetVerticesWithTransform(accessor, vertices, model_mesh, offsetof(Vertex, normal), world_matrix, &vertex_count);
|
||||
} break;
|
||||
case cgltf_attribute_type_tangent:
|
||||
{
|
||||
SetMeshData(model_mesh, accessor, &vertex_count);
|
||||
|
||||
f32 *buffer = GLTFBuffer<f32>(accessor);
|
||||
for(u64 i = 0; i < model_mesh->length; i += 1, buffer = AdvanceBuffer(f32, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+i].tangent = world_matrix * Vec4(buffer[0], buffer[1], buffer[2], buffer[3]);
|
||||
}
|
||||
} break;
|
||||
case cgltf_attribute_type_texcoord:
|
||||
{
|
||||
if(accessor->type == cgltf_type_vec2)
|
||||
{
|
||||
SetMeshData(model_mesh, accessor, &vertex_count);
|
||||
|
||||
u32 uv_index = prim->attributes[j].index;
|
||||
if(uv_index >= 2) // index into UV set
|
||||
{
|
||||
Logf("Unable to use more than two UVs, ignoring UV");
|
||||
}
|
||||
|
||||
switch(accessor->component_type)
|
||||
{
|
||||
case cgltf_component_type_r_8u:
|
||||
{
|
||||
u8 *buffer = GLTFBuffer<u8>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(u8, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].uv[uv_index] = Vec2((f32)(buffer[0]&0xFF)/255.0f, (f32)(buffer[1]&0xFF)/255.0f);
|
||||
}
|
||||
} break;
|
||||
case cgltf_component_type_r_16u:
|
||||
{
|
||||
u16 *buffer = GLTFBuffer<u16>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(u16, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].uv[uv_index] = Vec2((f32)(buffer[0]&0xFFFF)/65535.0f, (f32)(buffer[1]&0xFFFF)/65535.0f);
|
||||
}
|
||||
} break;
|
||||
case cgltf_component_type_r_32f:
|
||||
{
|
||||
f32 *buffer = GLTFBuffer<f32>(accessor);
|
||||
f32 *start_b = buffer;
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(f32, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].uv[uv_index] = Vec2(buffer[0], buffer[1]);
|
||||
}
|
||||
} break;
|
||||
default: Logf("Unsupported component type for UV [%llu], ignoring", accessor->component_type); break;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case cgltf_attribute_type_color:
|
||||
{
|
||||
if(accessor->type == cgltf_type_vec3 || accessor->type == cgltf_type_vec4)
|
||||
{
|
||||
SetMeshData(model_mesh, accessor, &vertex_count);
|
||||
|
||||
if(accessor->type == cgltf_type_vec3)
|
||||
{
|
||||
switch(accessor->component_type)
|
||||
{
|
||||
case cgltf_component_type_r_8u:
|
||||
{
|
||||
u8 *buffer = GLTFBuffer<u8>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(u8, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].color = Vec4(
|
||||
(f32)(buffer[0]&0xFF)/255.0f,
|
||||
(f32)(buffer[1]&0xFF)/255.0f,
|
||||
(f32)(buffer[2]&0xFF)/255.0f,
|
||||
1.0
|
||||
);
|
||||
}
|
||||
} break;
|
||||
case cgltf_component_type_r_16u:
|
||||
{
|
||||
u16 *buffer = GLTFBuffer<u16>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(u16, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].color = Vec4(
|
||||
(f32)(buffer[0]&0xFFFF)/65535.0f,
|
||||
(f32)(buffer[1]&0xFFFF)/65535.0f,
|
||||
(f32)(buffer[2]&0xFFFF)/65535.0f,
|
||||
1.0
|
||||
);
|
||||
}
|
||||
} break;
|
||||
case cgltf_component_type_r_32f:
|
||||
{
|
||||
f32 *buffer = GLTFBuffer<f32>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(f32, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].color = Vec4(buffer[0], buffer[1], buffer[2], 1.0f);
|
||||
}
|
||||
} break;
|
||||
default: Logf("Color component type is not supported [%llu]", accessor->component_type); break;
|
||||
}
|
||||
}
|
||||
else if(accessor->type == cgltf_type_vec4)
|
||||
{
|
||||
switch(accessor->component_type)
|
||||
{
|
||||
case cgltf_component_type_r_8u:
|
||||
{
|
||||
u8 *buffer = GLTFBuffer<u8>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(u8, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].color = Vec4(
|
||||
(f32)(buffer[0]&0xFF)/255.0f,
|
||||
(f32)(buffer[1]&0xFF)/255.0f,
|
||||
(f32)(buffer[2]&0xFF)/255.0f,
|
||||
(f32)(buffer[3]&0xFF)/255.0f
|
||||
);
|
||||
}
|
||||
} break;
|
||||
case cgltf_component_type_r_16u:
|
||||
{
|
||||
u16 *buffer = GLTFBuffer<u16>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(u16, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].color = Vec4(
|
||||
(f32)(buffer[0]&0xFFFF)/65535.0f,
|
||||
(f32)(buffer[1]&0xFFFF)/65535.0f,
|
||||
(f32)(buffer[2]&0xFFFF)/65535.0f,
|
||||
(f32)(buffer[3]&0xFFFF)/65535.0f
|
||||
);
|
||||
}
|
||||
} break;
|
||||
case cgltf_component_type_r_32f:
|
||||
{
|
||||
f32 *buffer = GLTFBuffer<f32>(accessor);
|
||||
for(u64 k = 0; k < model_mesh->length; k += 1, buffer = AdvanceBuffer(f32, buffer, accessor))
|
||||
{
|
||||
vertices[model_mesh->start+k].color = Vec4(buffer[0], buffer[1], buffer[2], buffer[3]);
|
||||
}
|
||||
} break;
|
||||
default: Logf("Color component type is not supported [%llu]", accessor->component_type); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} break;
|
||||
default: Logf("Unsupported attribute type [%llu]", prim->attributes[j].type); break;
|
||||
}
|
||||
}
|
||||
|
||||
if(prim->indices && prim->indices->buffer_view)
|
||||
{
|
||||
cgltf_accessor *accessor = prim->indices;
|
||||
|
||||
model_mesh->index_start = point_index;
|
||||
model_mesh->index_length = accessor->count;
|
||||
point_index += accessor->count;
|
||||
|
||||
switch(accessor->component_type)
|
||||
{
|
||||
case cgltf_component_type_r_8u: SetIndices<u8>(accessor, indices, model_mesh); break;
|
||||
case cgltf_component_type_r_16u: SetIndices<u16>(accessor, indices, model_mesh); break;
|
||||
case cgltf_component_type_r_32u: SetIndices<u32>(accessor, indices, model_mesh); break;
|
||||
default: Logf("Unsupported index component type [%llu]", accessor->component_type); break;
|
||||
}
|
||||
}
|
||||
else // Unindexed mesh
|
||||
{
|
||||
Logf("Unindexed mesh are currently not supported, ignoring");
|
||||
}
|
||||
|
||||
for(u64 k = 0; k < data->materials_count; k += 1)
|
||||
{
|
||||
if(data->materials+k == prim->material)
|
||||
{
|
||||
model.meshes[mesh_index].material_index = k;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mesh_index += 1;
|
||||
}
|
||||
}
|
||||
|
||||
Free(&file_data);
|
||||
|
||||
model.buffers = CreateModelBuffers();
|
||||
|
||||
glBindVertexArray(model.buffers.vertex_array);
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, model.buffers.vertex_buffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex)*vertices.length, vertices.ptr, GL_STATIC_DRAW);
|
||||
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, model.buffers.index_buffer);
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(u32)*indices.length, indices.ptr, GL_STATIC_DRAW);
|
||||
|
||||
glEnableVertexAttribArray(0);
|
||||
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void *)offsetof(Vertex, color));
|
||||
|
||||
glEnableVertexAttribArray(1);
|
||||
glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void *)offsetof(Vertex, tangent));
|
||||
|
||||
glEnableVertexAttribArray(2);
|
||||
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void *)offsetof(Vertex, pos));
|
||||
|
||||
glEnableVertexAttribArray(3);
|
||||
glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void *)offsetof(Vertex, normal));
|
||||
|
||||
glEnableVertexAttribArray(4);
|
||||
glVertexAttribPointer(4, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void *)offsetof(Vertex, uv[0]));
|
||||
|
||||
glEnableVertexAttribArray(5);
|
||||
glVertexAttribPointer(5, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void *)(offsetof(Vertex, uv[1])));
|
||||
|
||||
glBindVertexArray(0);
|
||||
|
||||
End(&temp_arena);
|
||||
|
||||
*model_result = model;
|
||||
|
||||
cgltf_free(data);
|
||||
}
|
||||
|
||||
|
||||
return result == cgltf_result_success;
|
||||
}
|
||||
BIN
assets/Avocado.bin
Normal file
155
assets/Avocado.gltf
Normal file
@ -0,0 +1,155 @@
|
||||
{
|
||||
"accessors": [
|
||||
{
|
||||
"bufferView": 0,
|
||||
"componentType": 5126,
|
||||
"count": 406,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 1,
|
||||
"componentType": 5126,
|
||||
"count": 406,
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 2,
|
||||
"componentType": 5126,
|
||||
"count": 406,
|
||||
"type": "VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView": 3,
|
||||
"componentType": 5126,
|
||||
"count": 406,
|
||||
"type": "VEC3",
|
||||
"max": [
|
||||
0.02128091,
|
||||
0.06284806,
|
||||
0.0138090011
|
||||
],
|
||||
"min": [
|
||||
-0.02128091,
|
||||
-4.773855E-05,
|
||||
-0.013809
|
||||
]
|
||||
},
|
||||
{
|
||||
"bufferView": 4,
|
||||
"componentType": 5123,
|
||||
"count": 2046,
|
||||
"type": "SCALAR"
|
||||
}
|
||||
],
|
||||
"asset": {
|
||||
"generator": "glTF Tools for Unity",
|
||||
"version": "2.0"
|
||||
},
|
||||
"bufferViews": [
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteLength": 3248
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 3248,
|
||||
"byteLength": 4872
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 8120,
|
||||
"byteLength": 6496
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 14616,
|
||||
"byteLength": 4872
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 19488,
|
||||
"byteLength": 4092
|
||||
}
|
||||
],
|
||||
"buffers": [
|
||||
{
|
||||
"uri": "Avocado.bin",
|
||||
"byteLength": 23580
|
||||
}
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"uri": "Avocado_baseColor.png"
|
||||
},
|
||||
{
|
||||
"uri": "Avocado_roughnessMetallic.png"
|
||||
},
|
||||
{
|
||||
"uri": "Avocado_normal.png"
|
||||
}
|
||||
],
|
||||
"meshes": [
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"TEXCOORD_0": 0,
|
||||
"NORMAL": 1,
|
||||
"TANGENT": 2,
|
||||
"POSITION": 3
|
||||
},
|
||||
"indices": 4,
|
||||
"material": 0
|
||||
}
|
||||
],
|
||||
"name": "Avocado"
|
||||
}
|
||||
],
|
||||
"materials": [
|
||||
{
|
||||
"pbrMetallicRoughness": {
|
||||
"baseColorTexture": {
|
||||
"index": 0
|
||||
},
|
||||
"metallicRoughnessTexture": {
|
||||
"index": 1
|
||||
}
|
||||
},
|
||||
"normalTexture": {
|
||||
"index": 2
|
||||
},
|
||||
"name": "2256_Avocado_d"
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"mesh": 0,
|
||||
"rotation": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"name": "Avocado"
|
||||
}
|
||||
],
|
||||
"scene": 0,
|
||||
"scenes": [
|
||||
{
|
||||
"nodes": [
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures": [
|
||||
{
|
||||
"source": 0
|
||||
},
|
||||
{
|
||||
"source": 1
|
||||
},
|
||||
{
|
||||
"source": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/Avocado_baseColor.png
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
assets/Avocado_normal.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
BIN
assets/Avocado_roughnessMetallic.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/Cube.bin
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/Cube_BaseColor.png
Normal file
|
After Width: | Height: | Size: 871 KiB |
BIN
assets/Cube_MetallicRoughness.png
Normal file
|
After Width: | Height: | Size: 319 B |
22
assets/StylizedNature/License_Pro.txt
Normal file
@ -0,0 +1,22 @@
|
||||
This is the PRO version of the Stylized Nature Megakit, which contains
|
||||
all of the models (116/116). You can buy the SOURCE version
|
||||
which has all the models and also includes Unity(URP), Unreal Engine and Godot projects
|
||||
with the stylized shader already set up.
|
||||
|
||||
You can get the other versions from the website https://quaternius.com
|
||||
|
||||
-------------------------------------------------------
|
||||
License:
|
||||
CC0 1.0 Universal (CC0 1.0)
|
||||
Public Domain Dedication
|
||||
https://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
------------------------------------------------------
|
||||
Models by @Quaternius
|
||||
Consider supporting me on Patreon!
|
||||
|
||||
https://www.patreon.com/quaternius
|
||||
|
||||
-------------------------------------------------------
|
||||
Join the Discord Server:
|
||||
https://discord.gg/vJqnRUYRfT
|
||||
BIN
assets/StylizedNature/Preview_1.jpg
Normal file
|
After Width: | Height: | Size: 584 KiB |
BIN
assets/StylizedNature/Preview_2.jpg
Normal file
|
After Width: | Height: | Size: 664 KiB |
BIN
assets/StylizedNature/Preview_3.jpg
Normal file
|
After Width: | Height: | Size: 431 KiB |
BIN
assets/StylizedNature/Preview_4.jpg
Normal file
|
After Width: | Height: | Size: 778 KiB |
BIN
assets/StylizedNature/Textures/Bark_BirchTree.png
Normal file
|
After Width: | Height: | Size: 5.0 MiB |
BIN
assets/StylizedNature/Textures/Bark_BirchTree_Normal.png
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
BIN
assets/StylizedNature/Textures/Bark_DeadTree.png
Normal file
|
After Width: | Height: | Size: 4.0 MiB |
BIN
assets/StylizedNature/Textures/Bark_DeadTree_Normal.png
Normal file
|
After Width: | Height: | Size: 5.5 MiB |
BIN
assets/StylizedNature/Textures/Bark_NormalTree.png
Normal file
|
After Width: | Height: | Size: 3.7 MiB |
BIN
assets/StylizedNature/Textures/Bark_NormalTree_Normal.png
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/StylizedNature/Textures/Bark_PineTree.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
assets/StylizedNature/Textures/Bark_PineTree_Normal.png
Normal file
|
After Width: | Height: | Size: 4.9 MiB |
BIN
assets/StylizedNature/Textures/Bark_TwistedTree.png
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
assets/StylizedNature/Textures/Bark_TwistedTree_Normal.png
Normal file
|
After Width: | Height: | Size: 5.5 MiB |
BIN
assets/StylizedNature/Textures/Flowers.png
Normal file
|
After Width: | Height: | Size: 434 KiB |
BIN
assets/StylizedNature/Textures/Grass.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
assets/StylizedNature/Textures/Leaf_Pine.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
assets/StylizedNature/Textures/Leaf_Pine_C.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
assets/StylizedNature/Textures/Leaves.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
assets/StylizedNature/Textures/Leaves_Birch.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
assets/StylizedNature/Textures/Leaves_Birch_C.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
assets/StylizedNature/Textures/Leaves_CherryBlossom.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
assets/StylizedNature/Textures/Leaves_CherryBlossom_C.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
assets/StylizedNature/Textures/Leaves_GiantPine.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
assets/StylizedNature/Textures/Leaves_GiantPine_C.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
assets/StylizedNature/Textures/Leaves_NormalTree.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
assets/StylizedNature/Textures/Leaves_NormalTree_C.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
assets/StylizedNature/Textures/Leaves_Square.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
assets/StylizedNature/Textures/Leaves_TallThick.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
assets/StylizedNature/Textures/Leaves_TallThick_C.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
assets/StylizedNature/Textures/Leaves_TwistedTree.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
assets/StylizedNature/Textures/Leaves_TwistedTree_C.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
assets/StylizedNature/Textures/Mushrooms.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
assets/StylizedNature/Textures/Noise_Perlin.png
Normal file
|
After Width: | Height: | Size: 331 KiB |
BIN
assets/StylizedNature/Textures/Noise_Wind.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
assets/StylizedNature/Textures/Normal_Default.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
assets/StylizedNature/Textures/PathRocks_Desert_Diffuse.png
Normal file
|
After Width: | Height: | Size: 637 KiB |
BIN
assets/StylizedNature/Textures/PathRocks_Diffuse.png
Normal file
|
After Width: | Height: | Size: 793 KiB |
BIN
assets/StylizedNature/Textures/Rocks_Desert_Diffuse.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
assets/StylizedNature/Textures/Rocks_Diffuse.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
assets/StylizedNature/glTF/Bark_BirchTree.png
Normal file
|
After Width: | Height: | Size: 5.0 MiB |
BIN
assets/StylizedNature/glTF/Bark_BirchTree_Normal.png
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
BIN
assets/StylizedNature/glTF/Bark_DeadTree.png
Normal file
|
After Width: | Height: | Size: 4.0 MiB |
BIN
assets/StylizedNature/glTF/Bark_DeadTree_Normal.png
Normal file
|
After Width: | Height: | Size: 5.5 MiB |
BIN
assets/StylizedNature/glTF/Bark_NormalTree.png
Normal file
|
After Width: | Height: | Size: 3.7 MiB |
BIN
assets/StylizedNature/glTF/Bark_NormalTree_Normal.png
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/StylizedNature/glTF/Bark_PineTree.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
assets/StylizedNature/glTF/Bark_PineTree_Normal.png
Normal file
|
After Width: | Height: | Size: 4.9 MiB |
BIN
assets/StylizedNature/glTF/Bark_TwistedTree.png
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
assets/StylizedNature/glTF/Bark_TwistedTree_Normal.png
Normal file
|
After Width: | Height: | Size: 5.5 MiB |
BIN
assets/StylizedNature/glTF/Birch_1.bin
Normal file
262
assets/StylizedNature/glTF/Birch_1.gltf
Normal file
@ -0,0 +1,262 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Birch_1"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Bark_Birch",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_Birch",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.003",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree_Normal",
|
||||
"uri":"Bark_BirchTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree",
|
||||
"uri":"Bark_BirchTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_Birch_C",
|
||||
"uri":"Leaves_Birch_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":7597,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":7597,
|
||||
"max":[
|
||||
2.8055684566497803,
|
||||
11.920513153076172,
|
||||
2.158252239227295
|
||||
],
|
||||
"min":[
|
||||
-2.412018060684204,
|
||||
-0.4285776913166046,
|
||||
-3.071343183517456
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":7597,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":7597,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":14526,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"max":[
|
||||
3.4271676540374756,
|
||||
13.293113708496094,
|
||||
2.8316140174865723
|
||||
],
|
||||
"min":[
|
||||
-3.0056581497192383,
|
||||
4.435910701751709,
|
||||
-3.710219144821167
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":4608,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":121552,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":91164,
|
||||
"byteOffset":121552,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":91164,
|
||||
"byteOffset":212716,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":60776,
|
||||
"byteOffset":303880,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":29052,
|
||||
"byteOffset":364656,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":49152,
|
||||
"byteOffset":393708,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36864,
|
||||
"byteOffset":442860,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36864,
|
||||
"byteOffset":479724,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":24576,
|
||||
"byteOffset":516588,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":9216,
|
||||
"byteOffset":541164,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":550380,
|
||||
"uri":"Birch_1.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Birch_2.bin
Normal file
262
assets/StylizedNature/glTF/Birch_2.gltf
Normal file
@ -0,0 +1,262 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Birch_2"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Bark_Birch",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_Birch",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.004",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree_Normal",
|
||||
"uri":"Bark_BirchTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree",
|
||||
"uri":"Bark_BirchTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_Birch_C",
|
||||
"uri":"Leaves_Birch_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":6574,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":6574,
|
||||
"max":[
|
||||
3.22851300239563,
|
||||
12.46019172668457,
|
||||
1.1877045631408691
|
||||
],
|
||||
"min":[
|
||||
-2.3360869884490967,
|
||||
-0.428577721118927,
|
||||
-2.7287137508392334
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":6574,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":6574,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":13599,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":4224,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":4224,
|
||||
"max":[
|
||||
3.7881360054016113,
|
||||
13.101866722106934,
|
||||
1.8924623727798462
|
||||
],
|
||||
"min":[
|
||||
-2.875913143157959,
|
||||
4.623663902282715,
|
||||
-3.3586809635162354
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":4224,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":4224,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":6336,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":105184,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":78888,
|
||||
"byteOffset":105184,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":78888,
|
||||
"byteOffset":184072,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":52592,
|
||||
"byteOffset":262960,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":27198,
|
||||
"byteOffset":315552,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":67584,
|
||||
"byteOffset":342752,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":50688,
|
||||
"byteOffset":410336,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":50688,
|
||||
"byteOffset":461024,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":33792,
|
||||
"byteOffset":511712,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":12672,
|
||||
"byteOffset":545504,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":558176,
|
||||
"uri":"Birch_2.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Birch_3.bin
Normal file
262
assets/StylizedNature/glTF/Birch_3.gltf
Normal file
@ -0,0 +1,262 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Birch_3"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Bark_Birch",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_Birch",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.005",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree_Normal",
|
||||
"uri":"Bark_BirchTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree",
|
||||
"uri":"Bark_BirchTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_Birch_C",
|
||||
"uri":"Leaves_Birch_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":6359,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":6359,
|
||||
"max":[
|
||||
4.2283711433410645,
|
||||
12.36229133605957,
|
||||
1.8531852960586548
|
||||
],
|
||||
"min":[
|
||||
-2.045778512954712,
|
||||
-0.4285776913166046,
|
||||
-3.2668685913085938
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":6359,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":6359,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":12879,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"max":[
|
||||
4.819523334503174,
|
||||
12.926748275756836,
|
||||
2.6471641063690186
|
||||
],
|
||||
"min":[
|
||||
-3.152590274810791,
|
||||
5.477759838104248,
|
||||
-4.073222637176514
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":4584,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":101744,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":76308,
|
||||
"byteOffset":101744,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":76308,
|
||||
"byteOffset":178052,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":50872,
|
||||
"byteOffset":254360,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":25758,
|
||||
"byteOffset":305232,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":48896,
|
||||
"byteOffset":330992,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36672,
|
||||
"byteOffset":379888,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36672,
|
||||
"byteOffset":416560,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":24448,
|
||||
"byteOffset":453232,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":9168,
|
||||
"byteOffset":477680,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":486848,
|
||||
"uri":"Birch_3.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Birch_4.bin
Normal file
262
assets/StylizedNature/glTF/Birch_4.gltf
Normal file
@ -0,0 +1,262 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Birch_4"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Bark_Birch",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_Birch",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.006",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree_Normal",
|
||||
"uri":"Bark_BirchTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree",
|
||||
"uri":"Bark_BirchTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_Birch_C",
|
||||
"uri":"Leaves_Birch_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":6350,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":6350,
|
||||
"max":[
|
||||
2.5928025245666504,
|
||||
10.423952102661133,
|
||||
3.0175139904022217
|
||||
],
|
||||
"min":[
|
||||
-2.343264102935791,
|
||||
-0.4285776913166046,
|
||||
-2.4500553607940674
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":6350,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":6350,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":12768,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"max":[
|
||||
3.188059091567993,
|
||||
11.192404747009277,
|
||||
3.5388429164886475
|
||||
],
|
||||
"min":[
|
||||
-3.0476174354553223,
|
||||
4.711092472076416,
|
||||
-3.103534460067749
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":3056,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":4584,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":101600,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":76200,
|
||||
"byteOffset":101600,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":76200,
|
||||
"byteOffset":177800,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":50800,
|
||||
"byteOffset":254000,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":25536,
|
||||
"byteOffset":304800,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":48896,
|
||||
"byteOffset":330336,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36672,
|
||||
"byteOffset":379232,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36672,
|
||||
"byteOffset":415904,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":24448,
|
||||
"byteOffset":452576,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":9168,
|
||||
"byteOffset":477024,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":486192,
|
||||
"uri":"Birch_4.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Birch_4GLB.glb
Normal file
BIN
assets/StylizedNature/glTF/Birch_5.bin
Normal file
262
assets/StylizedNature/glTF/Birch_5.gltf
Normal file
@ -0,0 +1,262 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Birch_5"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Bark_Birch",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_Birch",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.007",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree_Normal",
|
||||
"uri":"Bark_BirchTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_BirchTree",
|
||||
"uri":"Bark_BirchTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_Birch_C",
|
||||
"uri":"Leaves_Birch_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":5482,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":5482,
|
||||
"max":[
|
||||
3.253328323364258,
|
||||
12.484357833862305,
|
||||
0.703652560710907
|
||||
],
|
||||
"min":[
|
||||
-2.242967128753662,
|
||||
-0.428577721118927,
|
||||
-3.905938148498535
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":5482,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":5482,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":10710,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"max":[
|
||||
3.809194803237915,
|
||||
13.289700508117676,
|
||||
1.2367165088653564
|
||||
],
|
||||
"min":[
|
||||
-2.8990869522094727,
|
||||
4.210744857788086,
|
||||
-5.081326007843018
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":3072,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":4608,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":87712,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":65784,
|
||||
"byteOffset":87712,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":65784,
|
||||
"byteOffset":153496,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":43856,
|
||||
"byteOffset":219280,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":21420,
|
||||
"byteOffset":263136,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":49152,
|
||||
"byteOffset":284556,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36864,
|
||||
"byteOffset":333708,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":36864,
|
||||
"byteOffset":370572,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":24576,
|
||||
"byteOffset":407436,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":9216,
|
||||
"byteOffset":432012,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":441228,
|
||||
"uri":"Birch_5.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Bush_Common.bin
Normal file
151
assets/StylizedNature/glTF/Bush_Common.gltf
Normal file
@ -0,0 +1,151 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Bush_Common"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_TwistedTree",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.008",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_TwistedTree_C",
|
||||
"uri":"Leaves_TwistedTree_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"max":[
|
||||
0.9913685917854309,
|
||||
1.3470909595489502,
|
||||
0.9907516837120056
|
||||
],
|
||||
"min":[
|
||||
-0.9234761595726013,
|
||||
-0.234694704413414,
|
||||
-0.9743891954421997
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":2700,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":28800,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":21600,
|
||||
"byteOffset":28800,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":21600,
|
||||
"byteOffset":50400,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":14400,
|
||||
"byteOffset":72000,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":5400,
|
||||
"byteOffset":86400,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":91800,
|
||||
"uri":"Bush_Common.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Bush_Common_Flowers.bin
Normal file
252
assets/StylizedNature/glTF/Bush_Common_Flowers.gltf
Normal file
@ -0,0 +1,252 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Bush_Common_Flowers"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_NormalTree",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Flowers",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.009",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_NormalTree_C",
|
||||
"uri":"Leaves_NormalTree_C.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Flowers",
|
||||
"uri":"Flowers.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"max":[
|
||||
0.9913685917854309,
|
||||
1.3470909595489502,
|
||||
0.9907516837120056
|
||||
],
|
||||
"min":[
|
||||
-0.9234761595726013,
|
||||
-0.234694704413414,
|
||||
-0.9743891954421997
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":1800,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":2700,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":715,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":715,
|
||||
"max":[
|
||||
0.9718135595321655,
|
||||
1.328537940979004,
|
||||
0.98771071434021
|
||||
],
|
||||
"min":[
|
||||
-0.7453983426094055,
|
||||
0.2586841881275177,
|
||||
-0.9251851439476013
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":715,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":715,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":1404,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":28800,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":21600,
|
||||
"byteOffset":28800,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":21600,
|
||||
"byteOffset":50400,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":14400,
|
||||
"byteOffset":72000,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":5400,
|
||||
"byteOffset":86400,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":11440,
|
||||
"byteOffset":91800,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":8580,
|
||||
"byteOffset":103240,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":8580,
|
||||
"byteOffset":111820,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":5720,
|
||||
"byteOffset":120400,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":2808,
|
||||
"byteOffset":126120,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":128928,
|
||||
"uri":"Bush_Common_Flowers.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Bush_Large.bin
Normal file
151
assets/StylizedNature/glTF/Bush_Large.gltf
Normal file
@ -0,0 +1,151 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Bush_Large"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_GiantPine",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.046",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_GiantPine_C",
|
||||
"uri":"Leaves_GiantPine_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"max":[
|
||||
1.8775538206100464,
|
||||
2.833508014678955,
|
||||
1.8439654111862183
|
||||
],
|
||||
"min":[
|
||||
-1.7178152799606323,
|
||||
-0.41830262541770935,
|
||||
-1.8215556144714355
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":2592,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":27648,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":20736,
|
||||
"byteOffset":27648,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":20736,
|
||||
"byteOffset":48384,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":13824,
|
||||
"byteOffset":69120,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":5184,
|
||||
"byteOffset":82944,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":88128,
|
||||
"uri":"Bush_Large.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Bush_Large_Flowers.bin
Normal file
252
assets/StylizedNature/glTF/Bush_Large_Flowers.gltf
Normal file
@ -0,0 +1,252 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Bush_Large_Flowers"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Flowers",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_GiantPine",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.010",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Flowers",
|
||||
"uri":"Flowers.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_GiantPine_C",
|
||||
"uri":"Leaves_GiantPine_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":549,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":549,
|
||||
"max":[
|
||||
2.002925395965576,
|
||||
2.83725643157959,
|
||||
1.763440728187561
|
||||
],
|
||||
"min":[
|
||||
-1.7995274066925049,
|
||||
0.1615467667579651,
|
||||
-1.404332160949707
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":549,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":549,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":1035,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"max":[
|
||||
1.8775538206100464,
|
||||
2.833508014678955,
|
||||
1.8439654111862183
|
||||
],
|
||||
"min":[
|
||||
-1.7178152799606323,
|
||||
-0.41830262541770935,
|
||||
-1.8215556144714355
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":1728,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":2592,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":8784,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":6588,
|
||||
"byteOffset":8784,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":6588,
|
||||
"byteOffset":15372,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":4392,
|
||||
"byteOffset":21960,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":2070,
|
||||
"byteOffset":26352,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":27648,
|
||||
"byteOffset":28424,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":20736,
|
||||
"byteOffset":56072,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":20736,
|
||||
"byteOffset":76808,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":13824,
|
||||
"byteOffset":97544,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":5184,
|
||||
"byteOffset":111368,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":116552,
|
||||
"uri":"Bush_Large_Flowers.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Bush_Long_1.bin
Normal file
151
assets/StylizedNature/glTF/Bush_Long_1.gltf
Normal file
@ -0,0 +1,151 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Bush_Long_1"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_NormalTree",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.011",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_NormalTree_C",
|
||||
"uri":"Leaves_NormalTree_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":1044,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":1044,
|
||||
"max":[
|
||||
0.8625106811523438,
|
||||
1.9658807516098022,
|
||||
0.7979487180709839
|
||||
],
|
||||
"min":[
|
||||
-0.814096987247467,
|
||||
-0.402360737323761,
|
||||
-0.8449163436889648
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":1044,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":1044,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":1566,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":16704,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":12528,
|
||||
"byteOffset":16704,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":12528,
|
||||
"byteOffset":29232,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":8352,
|
||||
"byteOffset":41760,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":3132,
|
||||
"byteOffset":50112,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":53244,
|
||||
"uri":"Bush_Long_1.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Bush_Long_2.bin
Normal file
151
assets/StylizedNature/glTF/Bush_Long_2.gltf
Normal file
@ -0,0 +1,151 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Bush_Long_2"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_NormalTree",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.012",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_NormalTree_C",
|
||||
"uri":"Leaves_NormalTree_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":7508,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":7508,
|
||||
"max":[
|
||||
0.8436034321784973,
|
||||
2.362247943878174,
|
||||
0.760888397693634
|
||||
],
|
||||
"min":[
|
||||
-0.76265949010849,
|
||||
-0.40063750743865967,
|
||||
-0.8000847697257996
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":7508,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":7508,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":16179,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":120128,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":90096,
|
||||
"byteOffset":120128,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":90096,
|
||||
"byteOffset":210224,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":60064,
|
||||
"byteOffset":300320,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":32358,
|
||||
"byteOffset":360384,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":392744,
|
||||
"uri":"Bush_Long_2.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/CherryBlossom_1.bin
Normal file
263
assets/StylizedNature/glTF/CherryBlossom_1.gltf
Normal file
@ -0,0 +1,263 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"CherryBlossom_1"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Bark_NormalTree",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaMode":"BLEND",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_CherryBlossom",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.013",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree_Normal",
|
||||
"uri":"Bark_NormalTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree",
|
||||
"uri":"Bark_NormalTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_CherryBlossom_C",
|
||||
"uri":"Leaves_CherryBlossom_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":11878,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":11878,
|
||||
"max":[
|
||||
3.7631359100341797,
|
||||
12.229462623596191,
|
||||
2.7853715419769287
|
||||
],
|
||||
"min":[
|
||||
-4.053962707519531,
|
||||
-0.210661843419075,
|
||||
-8.084226608276367
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":11878,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":11878,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":27840,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":7195,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":7195,
|
||||
"max":[
|
||||
5.883588790893555,
|
||||
13.168240547180176,
|
||||
4.619854927062988
|
||||
],
|
||||
"min":[
|
||||
-6.213872909545898,
|
||||
1.9577397108078003,
|
||||
-10.055851936340332
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":7195,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":7195,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":10788,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":190048,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":142536,
|
||||
"byteOffset":190048,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":142536,
|
||||
"byteOffset":332584,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":95024,
|
||||
"byteOffset":475120,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":55680,
|
||||
"byteOffset":570144,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":115120,
|
||||
"byteOffset":625824,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":86340,
|
||||
"byteOffset":740944,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":86340,
|
||||
"byteOffset":827284,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":57560,
|
||||
"byteOffset":913624,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":21576,
|
||||
"byteOffset":971184,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":992760,
|
||||
"uri":"CherryBlossom_1.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/CherryBlossom_2.bin
Normal file
263
assets/StylizedNature/glTF/CherryBlossom_2.gltf
Normal file
@ -0,0 +1,263 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"CherryBlossom_2"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Bark_NormalTree",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaMode":"BLEND",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_CherryBlossom",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.014",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree_Normal",
|
||||
"uri":"Bark_NormalTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree",
|
||||
"uri":"Bark_NormalTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_CherryBlossom_C",
|
||||
"uri":"Leaves_CherryBlossom_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":12523,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":12523,
|
||||
"max":[
|
||||
9.119078636169434,
|
||||
10.751580238342285,
|
||||
1.4064016342163086
|
||||
],
|
||||
"min":[
|
||||
-1.2529408931732178,
|
||||
-0.210661843419075,
|
||||
-8.434141159057617
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":12523,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":12523,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":29184,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":6889,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":6889,
|
||||
"max":[
|
||||
9.828458786010742,
|
||||
11.349228858947754,
|
||||
2.3914573192596436
|
||||
],
|
||||
"min":[
|
||||
-2.5993385314941406,
|
||||
0.9124367237091064,
|
||||
-9.838790893554688
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":6889,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":6889,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":10332,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":200368,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":150276,
|
||||
"byteOffset":200368,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":150276,
|
||||
"byteOffset":350644,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":100184,
|
||||
"byteOffset":500920,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":58368,
|
||||
"byteOffset":601104,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":110224,
|
||||
"byteOffset":659472,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":82668,
|
||||
"byteOffset":769696,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":82668,
|
||||
"byteOffset":852364,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":55112,
|
||||
"byteOffset":935032,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":20664,
|
||||
"byteOffset":990144,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":1010808,
|
||||
"uri":"CherryBlossom_2.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/CherryBlossom_3.bin
Normal file
263
assets/StylizedNature/glTF/CherryBlossom_3.gltf
Normal file
@ -0,0 +1,263 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"CherryBlossom_3"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Bark_NormalTree",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaMode":"BLEND",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_CherryBlossom",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.015",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree_Normal",
|
||||
"uri":"Bark_NormalTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree",
|
||||
"uri":"Bark_NormalTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_CherryBlossom_C",
|
||||
"uri":"Leaves_CherryBlossom_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":12431,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":12431,
|
||||
"max":[
|
||||
9.674745559692383,
|
||||
13.300257682800293,
|
||||
3.6033935546875
|
||||
],
|
||||
"min":[
|
||||
-3.3593084812164307,
|
||||
-0.210661843419075,
|
||||
-5.675198554992676
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":12431,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":12431,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":28983,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":10159,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":10159,
|
||||
"max":[
|
||||
11.798202514648438,
|
||||
14.277937889099121,
|
||||
4.928161144256592
|
||||
],
|
||||
"min":[
|
||||
-4.789698600769043,
|
||||
2.868657350540161,
|
||||
-8.101432800292969
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":10159,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":10159,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":15234,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":198896,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":149172,
|
||||
"byteOffset":198896,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":149172,
|
||||
"byteOffset":348068,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":99448,
|
||||
"byteOffset":497240,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":57966,
|
||||
"byteOffset":596688,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":162544,
|
||||
"byteOffset":654656,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":121908,
|
||||
"byteOffset":817200,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":121908,
|
||||
"byteOffset":939108,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":81272,
|
||||
"byteOffset":1061016,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":30468,
|
||||
"byteOffset":1142288,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":1172756,
|
||||
"uri":"CherryBlossom_3.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/CherryBlossom_4.bin
Normal file
263
assets/StylizedNature/glTF/CherryBlossom_4.gltf
Normal file
@ -0,0 +1,263 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"CherryBlossom_4"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Bark_NormalTree",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaMode":"BLEND",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_CherryBlossom",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.016",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree_Normal",
|
||||
"uri":"Bark_NormalTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree",
|
||||
"uri":"Bark_NormalTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_CherryBlossom_C",
|
||||
"uri":"Leaves_CherryBlossom_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":11564,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":11564,
|
||||
"max":[
|
||||
5.290931701660156,
|
||||
12.393915176391602,
|
||||
1.3411273956298828
|
||||
],
|
||||
"min":[
|
||||
-3.5921823978424072,
|
||||
-0.210661843419075,
|
||||
-7.434797286987305
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":11564,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":11564,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":27735,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":6295,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":6295,
|
||||
"max":[
|
||||
7.660218238830566,
|
||||
12.877479553222656,
|
||||
3.1258859634399414
|
||||
],
|
||||
"min":[
|
||||
-5.68044376373291,
|
||||
-0.49091777205467224,
|
||||
-9.417553901672363
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":6295,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":6295,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":9438,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":185024,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":138768,
|
||||
"byteOffset":185024,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":138768,
|
||||
"byteOffset":323792,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":92512,
|
||||
"byteOffset":462560,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":55470,
|
||||
"byteOffset":555072,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":100720,
|
||||
"byteOffset":610544,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":75540,
|
||||
"byteOffset":711264,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":75540,
|
||||
"byteOffset":786804,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":50360,
|
||||
"byteOffset":862344,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":18876,
|
||||
"byteOffset":912704,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":931580,
|
||||
"uri":"CherryBlossom_4.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/CherryBlossom_5.bin
Normal file
263
assets/StylizedNature/glTF/CherryBlossom_5.gltf
Normal file
@ -0,0 +1,263 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"CherryBlossom_5"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Bark_NormalTree",
|
||||
"normalTexture":{
|
||||
"index":0
|
||||
},
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":1
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"alphaMode":"BLEND",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves_CherryBlossom",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":2
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"tree.017",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
},
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":5,
|
||||
"POSITION":6,
|
||||
"NORMAL":7,
|
||||
"TEXCOORD_0":8
|
||||
},
|
||||
"indices":9,
|
||||
"material":1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":1
|
||||
},
|
||||
{
|
||||
"sampler":0,
|
||||
"source":2
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree_Normal",
|
||||
"uri":"Bark_NormalTree_Normal.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Bark_NormalTree",
|
||||
"uri":"Bark_NormalTree.png"
|
||||
},
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves_CherryBlossom_C",
|
||||
"uri":"Leaves_CherryBlossom_C.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":11697,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":11697,
|
||||
"max":[
|
||||
4.682197093963623,
|
||||
12.478440284729004,
|
||||
3.106804132461548
|
||||
],
|
||||
"min":[
|
||||
-4.452157020568848,
|
||||
-0.210661843419075,
|
||||
-5.747885704040527
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":11697,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":11697,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":28014,
|
||||
"type":"SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView":5,
|
||||
"componentType":5126,
|
||||
"count":6504,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":6,
|
||||
"componentType":5126,
|
||||
"count":6504,
|
||||
"max":[
|
||||
6.370116233825684,
|
||||
13.169610023498535,
|
||||
4.772704124450684
|
||||
],
|
||||
"min":[
|
||||
-6.116915702819824,
|
||||
0.4446876347064972,
|
||||
-8.240160942077637
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":7,
|
||||
"componentType":5126,
|
||||
"count":6504,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":8,
|
||||
"componentType":5126,
|
||||
"count":6504,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":9,
|
||||
"componentType":5123,
|
||||
"count":9756,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":187152,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":140364,
|
||||
"byteOffset":187152,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":140364,
|
||||
"byteOffset":327516,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":93576,
|
||||
"byteOffset":467880,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":56028,
|
||||
"byteOffset":561456,
|
||||
"target":34963
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":104064,
|
||||
"byteOffset":617484,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":78048,
|
||||
"byteOffset":721548,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":78048,
|
||||
"byteOffset":799596,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":52032,
|
||||
"byteOffset":877644,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":19512,
|
||||
"byteOffset":929676,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":949188,
|
||||
"uri":"CherryBlossom_5.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Clover_1.bin
Normal file
152
assets/StylizedNature/glTF/Clover_1.gltf
Normal file
@ -0,0 +1,152 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Clover_1"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"Cylinder.018",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves",
|
||||
"uri":"Leaves.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5123,
|
||||
"count":267,
|
||||
"normalized":true,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":267,
|
||||
"max":[
|
||||
0.2939910888671875,
|
||||
1.131940245628357,
|
||||
0.36432379484176636
|
||||
],
|
||||
"min":[
|
||||
-0.5022982358932495,
|
||||
-0.012792191468179226,
|
||||
-0.39956197142601013
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":267,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":267,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":1137,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":2136,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":3204,
|
||||
"byteOffset":2136,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":3204,
|
||||
"byteOffset":5340,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":2136,
|
||||
"byteOffset":8544,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":2274,
|
||||
"byteOffset":10680,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":12956,
|
||||
"uri":"Clover_1.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
assets/StylizedNature/glTF/Clover_2.bin
Normal file
152
assets/StylizedNature/glTF/Clover_2.gltf
Normal file
@ -0,0 +1,152 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.0.44",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Clover_2"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"alphaCutoff":0.20000000298023224,
|
||||
"alphaMode":"MASK",
|
||||
"doubleSided":true,
|
||||
"name":"Leaves",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorTexture":{
|
||||
"index":0
|
||||
},
|
||||
"metallicFactor":0
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"Cylinder.002",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"COLOR_0":0,
|
||||
"POSITION":1,
|
||||
"NORMAL":2,
|
||||
"TEXCOORD_0":3
|
||||
},
|
||||
"indices":4,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"textures":[
|
||||
{
|
||||
"sampler":0,
|
||||
"source":0
|
||||
}
|
||||
],
|
||||
"images":[
|
||||
{
|
||||
"mimeType":"image/png",
|
||||
"name":"Leaves",
|
||||
"uri":"Leaves.png"
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5123,
|
||||
"count":433,
|
||||
"normalized":true,
|
||||
"type":"VEC4"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":433,
|
||||
"max":[
|
||||
0.34883004426956177,
|
||||
1.261434555053711,
|
||||
0.36432382464408875
|
||||
],
|
||||
"min":[
|
||||
-0.5022982358932495,
|
||||
-0.0023507503792643547,
|
||||
-0.47231054306030273
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":433,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5126,
|
||||
"count":433,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":4,
|
||||
"componentType":5123,
|
||||
"count":1845,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":3464,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":5196,
|
||||
"byteOffset":3464,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":5196,
|
||||
"byteOffset":8660,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":3464,
|
||||
"byteOffset":13856,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":3690,
|
||||
"byteOffset":17320,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"samplers":[
|
||||
{
|
||||
"magFilter":9729,
|
||||
"minFilter":9987
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":21012,
|
||||
"uri":"Clover_2.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||