- Add 'concrete-drywall' (Prepared Drywall) catalog finish + 512 KTX2/webp runtime assets; default walls (WALL_SLOT_DEFAULT interior+exterior) and the roof wall/trim band to it so roofs read continuous with walls. - fence: replace the 2-slot panel/rail split with 4 slots that match the panel's build options — posts / infill (showInfill) / base (grounded only) / rail — each its own mesh with userData.slotId; conditional slots track the build state. Defaults: posts/infill/base charcoal, rail wood-finewood27. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4217 lines
114 KiB
TypeScript
4217 lines
114 KiB
TypeScript
import {
|
|
type MaterialPresetPayload,
|
|
type MaterialTarget,
|
|
MaterialTarget as MaterialTargetSchema,
|
|
} from './schema/material'
|
|
|
|
export type MaterialCatalogItem = {
|
|
id: string
|
|
label: string
|
|
category: MaterialCategory
|
|
/**
|
|
* Where this finish is appropriate. Absent = universal (e.g. flat colors).
|
|
* The paint picker may filter by the slot being painted; v1 shows everything.
|
|
*/
|
|
surfaces?: MaterialSurface[]
|
|
description?: string
|
|
previewThumbnailUrl?: string
|
|
previewColor?: string
|
|
preset: MaterialPresetPayload
|
|
}
|
|
|
|
const WALL_TARGETS: MaterialTarget[] = [
|
|
MaterialTargetSchema.enum.wall,
|
|
MaterialTargetSchema.enum.chimney,
|
|
MaterialTargetSchema.enum.dormer,
|
|
]
|
|
|
|
const SLAB_TARGETS: MaterialTarget[] = [
|
|
MaterialTargetSchema.enum.slab,
|
|
MaterialTargetSchema.enum.chimney,
|
|
]
|
|
|
|
const WALL_AND_SLAB_TARGETS: MaterialTarget[] = [
|
|
MaterialTargetSchema.enum.wall,
|
|
MaterialTargetSchema.enum.slab,
|
|
MaterialTargetSchema.enum.chimney,
|
|
MaterialTargetSchema.enum.dormer,
|
|
]
|
|
|
|
const STAIR_TARGETS: MaterialTarget[] = [
|
|
MaterialTargetSchema.enum.stair,
|
|
MaterialTargetSchema.enum['stair-segment'],
|
|
]
|
|
|
|
const STAIR_AND_FENCE_TARGETS: MaterialTarget[] = [
|
|
...STAIR_TARGETS,
|
|
MaterialTargetSchema.enum.fence,
|
|
]
|
|
|
|
const ROOF_TARGETS: MaterialTarget[] = [
|
|
MaterialTargetSchema.enum.roof,
|
|
MaterialTargetSchema.enum['roof-segment'],
|
|
MaterialTargetSchema.enum.chimney,
|
|
MaterialTargetSchema.enum.dormer,
|
|
]
|
|
|
|
const CEILING_TARGETS: MaterialTarget[] = [MaterialTargetSchema.enum.ceiling]
|
|
|
|
export const MATERIAL_CATEGORIES = [
|
|
'colors',
|
|
'wood',
|
|
'stone',
|
|
'brick',
|
|
'tile',
|
|
'concrete',
|
|
'metal',
|
|
'fabric',
|
|
'leather',
|
|
'roofing',
|
|
'ground',
|
|
'glass',
|
|
] as const
|
|
export type MaterialCategory = (typeof MATERIAL_CATEGORIES)[number]
|
|
|
|
export const MATERIAL_SURFACES = [
|
|
'floor',
|
|
'wall',
|
|
'ceiling',
|
|
'roof',
|
|
'furniture',
|
|
'outdoor',
|
|
] as const
|
|
export type MaterialSurface = (typeof MATERIAL_SURFACES)[number]
|
|
|
|
export const MATERIAL_CATALOG: MaterialCatalogItem[] = [
|
|
{
|
|
id: 'wood-finewood27',
|
|
label: 'Finewood 27',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall', 'furniture'],
|
|
description: 'Fine wood finish',
|
|
previewThumbnailUrl: '/material/wood/finewood_27/finewood_27_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/finewood_27/finewood_27_basecolor.webp',
|
|
aoMap: '/material/wood/finewood_27/finewood_27_ambientocclusion.webp',
|
|
normalMap: '/material/wood/finewood_27/finewood_27_normal.webp',
|
|
roughnessMap: '/material/wood/finewood_27/finewood_27_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-floorplank1',
|
|
label: 'Floor Plank 1',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Wood plank finish',
|
|
previewThumbnailUrl: '/material/wood/floor_plank_1/floor_plank-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/floor_plank_1/floor_plank-diffuse.webp',
|
|
aoMap: '/material/wood/floor_plank_1/floor_plank-ao.webp',
|
|
metalnessMap: '/material/wood/floor_plank_1/floor_plank-specular.webp',
|
|
normalMap: '/material/wood/floor_plank_1/floor_plank-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 0.4,
|
|
repeatY: 0.4,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-hungarianparquet10',
|
|
label: 'Hungarian Parquet 10',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/hungarian_parquet_10/Hungarian Parquet_10_baseColor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/hungarian_parquet_10/Hungarian Parquet_10_baseColor.webp',
|
|
metalnessMap: '/material/wood/hungarian_parquet_10/Hungarian Parquet_10_specularLevel.webp',
|
|
normalMap: '/material/wood/hungarian_parquet_10/Hungarian Parquet_10_normal.webp',
|
|
roughnessMap: '/material/wood/hungarian_parquet_10/Hungarian Parquet_10_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-hungarianparquet2',
|
|
label: 'Hungarian Parquet 2',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/hungarian_parquet_2/Hungarian Parquet_2_baseColor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/hungarian_parquet_2/Hungarian Parquet_2_baseColor.webp',
|
|
metalnessMap: '/material/wood/hungarian_parquet_2/Hungarian Parquet_2_specularLevel.webp',
|
|
normalMap: '/material/wood/hungarian_parquet_2/Hungarian Parquet_2_normal.webp',
|
|
roughnessMap: '/material/wood/hungarian_parquet_2/Hungarian Parquet_2_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-squareparquet21',
|
|
label: 'Square Parquet 21',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl:
|
|
'/material/wood/square_parquet_21/Square Pattern Parquet_21_baseColor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/square_parquet_21/Square Pattern Parquet_21_baseColor.webp',
|
|
metalnessMap:
|
|
'/material/wood/square_parquet_21/Square Pattern Parquet_21_specularLevel.webp',
|
|
normalMap: '/material/wood/square_parquet_21/Square Pattern Parquet_21_normal.webp',
|
|
roughnessMap: '/material/wood/square_parquet_21/Square Pattern Parquet_21_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-squareparquet23',
|
|
label: 'Square Parquet 23',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl:
|
|
'/material/wood/square_wood_parquet_23/Square Pattern Parquet_23_baseColor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/square_wood_parquet_23/Square Pattern Parquet_23_baseColor.webp',
|
|
metalnessMap:
|
|
'/material/wood/square_wood_parquet_23/Square Pattern Parquet_23_specularLevel.webp',
|
|
normalMap: '/material/wood/square_wood_parquet_23/Square Pattern Parquet_23_normal.webp',
|
|
roughnessMap:
|
|
'/material/wood/square_wood_parquet_23/Square Pattern Parquet_23_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodfine1',
|
|
label: 'Wood Fine 1',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall', 'furniture'],
|
|
description: 'Fine wood finish',
|
|
previewThumbnailUrl: '/material/wood/wood_fine/wood_fine_1-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wood_fine/wood_fine_1-diffuse.webp',
|
|
aoMap: '/material/wood/wood_fine/wood_fine_1-ao.webp',
|
|
metalnessMap: '/material/wood/wood_fine/wood_fine_1-specular.webp',
|
|
normalMap: '/material/wood/wood_fine/wood_fine_1-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodfine11',
|
|
label: 'Wood Fine 11',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall', 'furniture'],
|
|
description: 'Fine wood finish',
|
|
previewThumbnailUrl: '/material/wood/wood_fine_11/wood_fine_11-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wood_fine_11/wood_fine_11-diffuse.webp',
|
|
aoMap: '/material/wood/wood_fine_11/wood_fine_11-ao.webp',
|
|
metalnessMap: '/material/wood/wood_fine_11/wood_fine_11-specular.webp',
|
|
normalMap: '/material/wood/wood_fine_11/wood_fine_11-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodfine13',
|
|
label: 'Wood Fine 13',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall', 'furniture'],
|
|
description: 'Fine wood finish',
|
|
previewThumbnailUrl: '/material/wood/wood_fine_13/wood_fine_13-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wood_fine_13/wood_fine_13-diffuse.webp',
|
|
aoMap: '/material/wood/wood_fine_13/wood_fine_13-ao.webp',
|
|
metalnessMap: '/material/wood/wood_fine_13/wood_fine_13-specular.webp',
|
|
normalMap: '/material/wood/wood_fine_13/wood_fine_13-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodfine2',
|
|
label: 'Wood Fine 2',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall', 'furniture'],
|
|
description: 'Fine wood finish',
|
|
previewThumbnailUrl: '/material/wood/wood_fine_2/wood_fine_2-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wood_fine_2/wood_fine_2-diffuse.webp',
|
|
aoMap: '/material/wood/wood_fine_2/wood_fine_2-ao.webp',
|
|
metalnessMap: '/material/wood/wood_fine_2/wood_fine_2-specular.webp',
|
|
normalMap: '/material/wood/wood_fine_2/wood_fine_2-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodfine22',
|
|
label: 'Wood Fine 22',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall', 'furniture'],
|
|
description: 'Fine wood finish',
|
|
previewThumbnailUrl: '/material/wood/wood_fine_22/wood_fine_22-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wood_fine_22/wood_fine_22-diffuse.webp',
|
|
aoMap: '/material/wood/wood_fine_22/wood_fine_22-ao.webp',
|
|
metalnessMap: '/material/wood/wood_fine_22/wood_fine_22-specular.webp',
|
|
normalMap: '/material/wood/wood_fine_22/wood_fine_22-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodfine24',
|
|
label: 'Wood Fine 24',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall', 'furniture'],
|
|
description: 'Fine wood finish',
|
|
previewThumbnailUrl: '/material/wood/wood_fine_24/wood_fine_24-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wood_fine_24/wood_fine_24-diffuse.webp',
|
|
aoMap: '/material/wood/wood_fine_24/wood_fine_24-ao.webp',
|
|
metalnessMap: '/material/wood/wood_fine_24/wood_fine_24-specular.webp',
|
|
normalMap: '/material/wood/wood_fine_24/wood_fine_24-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodparquet14',
|
|
label: 'Wood Parquet 14',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/wood_parquet_14/woodparquet_14_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wood_parquet_14/woodparquet_14_basecolor.webp',
|
|
aoMap: '/material/wood/wood_parquet_14/woodparquet_14_ambientocclusion.webp',
|
|
metalnessMap: '/material/wood/wood_parquet_14/woodparquet_14_metallic.webp',
|
|
normalMap: '/material/wood/wood_parquet_14/woodparquet_14_normal.webp',
|
|
roughnessMap: '/material/wood/wood_parquet_14/woodparquet_14_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodenparquet11',
|
|
label: 'Wooden Parquet 11',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/wooden_parquet_11/Classic Parquet_11_baseColor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/wooden_parquet_11/Classic Parquet_11_baseColor.webp',
|
|
metalnessMap: '/material/wood/wooden_parquet_11/Classic Parquet_11_specularLevel.webp',
|
|
normalMap: '/material/wood/wooden_parquet_11/Classic Parquet_11_normal.webp',
|
|
roughnessMap: '/material/wood/wooden_parquet_11/Classic Parquet_11_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodparquet121',
|
|
label: 'Wood Parquet 121',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/woodparquet_121/woodparquet_121_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/woodparquet_121/woodparquet_121_basecolor.webp',
|
|
aoMap: '/material/wood/woodparquet_121/woodparquet_121_ambientocclusion.webp',
|
|
normalMap: '/material/wood/woodparquet_121/woodparquet_121_normal.webp',
|
|
roughnessMap: '/material/wood/woodparquet_121/woodparquet_121_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodparquet56',
|
|
label: 'Wood Parquet 56',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/woodparquet_56/woodparquet_56_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/woodparquet_56/woodparquet_56_basecolor.webp',
|
|
aoMap: '/material/wood/woodparquet_56/woodparquet_56_ambientocclusion.webp',
|
|
metalnessMap: '/material/wood/woodparquet_56/woodparquet_56_metallic.webp',
|
|
normalMap: '/material/wood/woodparquet_56/woodparquet_56_normal.webp',
|
|
roughnessMap: '/material/wood/woodparquet_56/woodparquet_56_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodparquet65',
|
|
label: 'Wood Parquet 65',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/woodparquet_65/woodparquet_65_BaseColor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/woodparquet_65/woodparquet_65_BaseColor.webp',
|
|
aoMap: '/material/wood/woodparquet_65/woodparquet_65_AmbientOcclusion.webp',
|
|
metalnessMap: '/material/wood/woodparquet_65/woodparquet_65_Metallic.webp',
|
|
normalMap: '/material/wood/woodparquet_65/woodparquet_65_Normal.webp',
|
|
roughnessMap: '/material/wood/woodparquet_65/woodparquet_65_Roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodparquet99',
|
|
label: 'Wood Parquet 99',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Parquet wood finish',
|
|
previewThumbnailUrl: '/material/wood/woodparquet_99/woodparquet_99_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/woodparquet_99/woodparquet_99_basecolor.webp',
|
|
aoMap: '/material/wood/woodparquet_99/woodparquet_99_ambientocclusion.webp',
|
|
metalnessMap: '/material/wood/woodparquet_99/woodparquet_99_metallic.webp',
|
|
normalMap: '/material/wood/woodparquet_99/woodparquet_99_normal.webp',
|
|
roughnessMap: '/material/wood/woodparquet_99/woodparquet_99_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodplank19',
|
|
label: 'Wood Plank 19',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Wood plank finish',
|
|
previewThumbnailUrl: '/material/wood/woodplank_19/woodplank_19_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/woodplank_19/woodplank_19_basecolor.webp',
|
|
aoMap: '/material/wood/woodplank_19/woodplank_19_ambientocclusion.webp',
|
|
normalMap: '/material/wood/woodplank_19/woodplank_19_normal.webp',
|
|
roughnessMap: '/material/wood/woodplank_19/woodplank_19_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'wood-woodplank48',
|
|
label: 'Wood Plank 48',
|
|
category: 'wood',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Wood plank finish',
|
|
previewThumbnailUrl: '/material/wood/woodplank_48/woodplank_48_BaseColor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/wood/woodplank_48/woodplank_48_BaseColor.webp',
|
|
aoMap: '/material/wood/woodplank_48/woodplank_48_AmbientOcclusion.webp',
|
|
normalMap: '/material/wood/woodplank_48/woodplank_48_Normal.webp',
|
|
roughnessMap: '/material/wood/woodplank_48/woodplank_48_Roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-tile85a',
|
|
label: 'Quarry Tile',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Floor tile finish',
|
|
previewThumbnailUrl: '/material/flooring/tile_quarry/tile_quarry_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/tile_quarry/tile_quarry_basecolor.webp',
|
|
aoMap: '/material/flooring/tile_quarry/tile_quarry_ambientocclusion.webp',
|
|
normalMap: '/material/flooring/tile_quarry/tile_quarry_normal.webp',
|
|
roughnessMap: '/material/flooring/tile_quarry/tile_quarry_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 0.3,
|
|
repeatY: 0.3,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-rusticbrick',
|
|
label: 'Rustic Brick',
|
|
category: 'brick',
|
|
surfaces: ['wall', 'floor', 'outdoor'],
|
|
description: 'Brick finish',
|
|
previewThumbnailUrl: '/material/flooring/brick_wall_rustic/brick_wall_rustic_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/brick_wall_rustic/brick_wall_rustic_basecolor.jpg',
|
|
aoMap: '/material/flooring/brick_wall_rustic/brick_wall_rustic_ambientocclusion.jpg',
|
|
metalnessMap: '/material/flooring/brick_wall_rustic/brick_wall_rustic_metallic.jpg',
|
|
normalMap: '/material/flooring/brick_wall_rustic/brick_wall_rustic_normal.jpg',
|
|
roughnessMap: '/material/flooring/brick_wall_rustic/brick_wall_rustic_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1.5,
|
|
repeatY: 1.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-agedbrick',
|
|
label: 'Aged Brick',
|
|
category: 'brick',
|
|
surfaces: ['wall', 'floor', 'outdoor'],
|
|
description: 'Brick finish',
|
|
previewThumbnailUrl: '/material/flooring/brick_wall_aged/brick_wall_aged_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/brick_wall_aged/brick_wall_aged_basecolor.jpg',
|
|
aoMap: '/material/flooring/brick_wall_aged/brick_wall_aged_ambientocclusion.jpg',
|
|
metalnessMap: '/material/flooring/brick_wall_aged/brick_wall_aged_metallic.jpg',
|
|
normalMap: '/material/flooring/brick_wall_aged/brick_wall_aged_normal.jpg',
|
|
roughnessMap: '/material/flooring/brick_wall_aged/brick_wall_aged_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1.5,
|
|
repeatY: 1.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-weatheredbrick',
|
|
label: 'Weathered Brick',
|
|
category: 'brick',
|
|
surfaces: ['wall', 'floor', 'outdoor'],
|
|
description: 'Brick finish',
|
|
previewThumbnailUrl:
|
|
'/material/flooring/brick_wall_weathered/brick_wall_weathered_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/brick_wall_weathered/brick_wall_weathered_basecolor.jpg',
|
|
aoMap: '/material/flooring/brick_wall_weathered/brick_wall_weathered_ambientocclusion.jpg',
|
|
normalMap: '/material/flooring/brick_wall_weathered/brick_wall_weathered_normal.jpg',
|
|
roughnessMap: '/material/flooring/brick_wall_weathered/brick_wall_weathered_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-garagedoor',
|
|
label: 'Garage Panel',
|
|
category: 'metal',
|
|
surfaces: ['wall', 'furniture'],
|
|
description: 'Panel finish',
|
|
previewThumbnailUrl: '/material/flooring/garage_panel/garage_panel_diffuse.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/garage_panel/garage_panel_diffuse.jpg',
|
|
aoMap: '/material/flooring/garage_panel/garage_panel_ao.jpg',
|
|
metalnessMap: '/material/flooring/garage_panel/garage_panel_specular.jpg',
|
|
normalMap: '/material/flooring/garage_panel/garage_panel_normal.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-greenlabradorite',
|
|
label: 'Green Labradorite',
|
|
category: 'stone',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Stone flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/green_labradorite/green_labradorite_diffuse.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/green_labradorite/green_labradorite_diffuse.jpg',
|
|
aoMap: '/material/flooring/green_labradorite/green_labradorite_ao.jpg',
|
|
metalnessMap: '/material/flooring/green_labradorite/green_labradorite_specular.jpg',
|
|
normalMap: '/material/flooring/green_labradorite/green_labradorite_normal.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.35,
|
|
metalness: 0,
|
|
repeatX: 0.6,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-ground13',
|
|
label: 'Earth Ground',
|
|
category: 'ground',
|
|
surfaces: ['outdoor', 'floor'],
|
|
description: 'Ground surface finish',
|
|
previewThumbnailUrl: '/material/flooring/ground_earth/ground_earth_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/ground_earth/ground_earth_basecolor.jpg',
|
|
aoMap: '/material/flooring/ground_earth/ground_earth_ambientocclusion.jpg',
|
|
metalnessMap: '/material/flooring/ground_earth/ground_earth_metallic.jpg',
|
|
normalMap: '/material/flooring/ground_earth/ground_earth_normal.jpg',
|
|
roughnessMap: '/material/flooring/ground_earth/ground_earth_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-pooltiles',
|
|
label: 'Pool Tiles',
|
|
category: 'tile',
|
|
surfaces: ['floor', 'outdoor'],
|
|
description: 'Pool tile finish',
|
|
previewThumbnailUrl: '/material/flooring/pool_tiles/pool_tiles_diffuse.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/pool_tiles/pool_tiles_diffuse.jpg',
|
|
aoMap: '/material/flooring/pool_tiles/pool_tiles_ao.jpg',
|
|
metalnessMap: '/material/flooring/pool_tiles/pool_tiles_specular.jpg',
|
|
normalMap: '/material/flooring/pool_tiles/pool_tiles_normal.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-tiles3',
|
|
label: 'Checker Tiles',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Tile flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/tiles_checker/tiles_checker_diffuse.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/tiles_checker/tiles_checker_diffuse.jpg',
|
|
aoMap: '/material/flooring/tiles_checker/tiles_checker_ao.jpg',
|
|
metalnessMap: '/material/flooring/tiles_checker/tiles_checker_specular.jpg',
|
|
normalMap: '/material/flooring/tiles_checker/tiles_checker_normal.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-tiles4',
|
|
label: 'Grid Tiles',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Tile flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/tiles_grid/tiles_grid_diffuse.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/tiles_grid/tiles_grid_diffuse.jpg',
|
|
aoMap: '/material/flooring/tiles_grid/tiles_grid_ao.jpg',
|
|
metalnessMap: '/material/flooring/tiles_grid/tiles_grid_specular.jpg',
|
|
normalMap: '/material/flooring/tiles_grid/tiles_grid_normal.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-wallstone1',
|
|
label: 'Stone Wall',
|
|
category: 'stone',
|
|
surfaces: ['wall', 'floor', 'outdoor'],
|
|
description: 'Stone finish',
|
|
previewThumbnailUrl: '/material/flooring/stone_wall/stone_wall_diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/stone_wall/stone_wall_diffuse.webp',
|
|
aoMap: '/material/flooring/stone_wall/stone_wall_ao.webp',
|
|
metalnessMap: '/material/flooring/stone_wall/stone_wall_specular.webp',
|
|
normalMap: '/material/flooring/stone_wall/stone_wall_normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-woodenceramic3',
|
|
label: 'Wooden Ceramic 3',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Wood-look ceramic flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/wooden_ceramic_3/wooden_ceramic-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/wooden_ceramic_3/wooden_ceramic-diffuse.webp',
|
|
aoMap: '/material/flooring/wooden_ceramic_3/wooden_ceramic-ao.webp',
|
|
metalnessMap: '/material/flooring/wooden_ceramic_3/wooden_ceramic-specular.webp',
|
|
normalMap: '/material/flooring/wooden_ceramic_3/wooden_ceramic-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-ceramic53',
|
|
label: 'Ceramic Mosaic',
|
|
category: 'tile',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Ceramic flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/ceramic_mosaic/ceramic_mosaic_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/ceramic_mosaic/ceramic_mosaic_basecolor.jpg',
|
|
aoMap: '/material/flooring/ceramic_mosaic/ceramic_mosaic_ambientocclusion.jpg',
|
|
metalnessMap: '/material/flooring/ceramic_mosaic/ceramic_mosaic_metallic.jpg',
|
|
normalMap: '/material/flooring/ceramic_mosaic/ceramic_mosaic_normal.png',
|
|
roughnessMap: '/material/flooring/ceramic_mosaic/ceramic_mosaic_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-terrazzo19',
|
|
label: 'Terrazzo',
|
|
category: 'stone',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Terrazzo flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/terrazzo/terrazzo_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/terrazzo/terrazzo_basecolor.jpg',
|
|
metalnessMap: '/material/flooring/terrazzo/terrazzo_metallic.jpg',
|
|
normalMap: '/material/flooring/terrazzo/terrazzo_normal.jpg',
|
|
roughnessMap: '/material/flooring/terrazzo/terrazzo_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-tile79',
|
|
label: 'Stone Tile',
|
|
category: 'stone',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Floor tile finish',
|
|
previewThumbnailUrl: '/material/flooring/tile_stone/tile_stone_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/tile_stone/tile_stone_basecolor.webp',
|
|
aoMap: '/material/flooring/tile_stone/tile_stone_ambientocclusion.webp',
|
|
normalMap: '/material/flooring/tile_stone/tile_stone_normal.webp',
|
|
roughnessMap: '/material/flooring/tile_stone/tile_stone_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-tile86',
|
|
label: 'Terracotta Tile',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Floor tile finish',
|
|
previewThumbnailUrl: '/material/flooring/tile_terracotta/tile_terracotta_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/tile_terracotta/tile_terracotta_basecolor.webp',
|
|
aoMap: '/material/flooring/tile_terracotta/tile_terracotta_ambientocclusion.webp',
|
|
normalMap: '/material/flooring/tile_terracotta/tile_terracotta_normal.webp',
|
|
roughnessMap: '/material/flooring/tile_terracotta/tile_terracotta_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-greenquartzitea',
|
|
label: 'Green Quartzite A',
|
|
category: 'stone',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Green quartzite flooring finish',
|
|
previewThumbnailUrl:
|
|
'/material/flooring/green_glass_quartzite/green_glass_quartzite_diffuse.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/green_glass_quartzite/green_glass_quartzite_diffuse.jpg',
|
|
aoMap: '/material/flooring/green_glass_quartzite/green_glass_quartzite_ao.jpg',
|
|
metalnessMap: '/material/flooring/green_glass_quartzite/green_glass_quartzite_specular.jpg',
|
|
normalMap: '/material/flooring/green_glass_quartzite/green_glass_quartzite_normal.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.35,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-darkceramic22',
|
|
label: 'Dark Ceramic Grunge',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Dark ceramic flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/dark_ceramic_grunge/dark_ceramic_grunge_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/dark_ceramic_grunge/dark_ceramic_grunge_basecolor.jpg',
|
|
aoMap: '/material/flooring/dark_ceramic_grunge/dark_ceramic_grunge_ambientocclusion.jpg',
|
|
metalnessMap: '/material/flooring/dark_ceramic_grunge/dark_ceramic_grunge_metallic.jpg',
|
|
normalMap: '/material/flooring/dark_ceramic_grunge/dark_ceramic_grunge_normal.jpg',
|
|
roughnessMap: '/material/flooring/dark_ceramic_grunge/dark_ceramic_grunge_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-lightceramic24',
|
|
label: 'Light Ceramic Grunge',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Light ceramic flooring finish',
|
|
previewThumbnailUrl:
|
|
'/material/flooring/light_ceramic_grunge/light_ceramic_grunge_basecolor.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/light_ceramic_grunge/light_ceramic_grunge_basecolor.jpg',
|
|
aoMap: '/material/flooring/light_ceramic_grunge/light_ceramic_grunge_ambientocclusion.jpg',
|
|
metalnessMap: '/material/flooring/light_ceramic_grunge/light_ceramic_grunge_metallic.jpg',
|
|
normalMap: '/material/flooring/light_ceramic_grunge/light_ceramic_grunge_normal.jpg',
|
|
roughnessMap: '/material/flooring/light_ceramic_grunge/light_ceramic_grunge_roughness.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-statuarettowhite',
|
|
label: 'Statuaretto White',
|
|
category: 'stone',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'White marble flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/statuaretto/statuaretto_diffuse.jpg',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/statuaretto/statuaretto_diffuse.jpg',
|
|
aoMap: '/material/flooring/statuaretto/statuaretto_ao.jpg',
|
|
metalnessMap: '/material/flooring/statuaretto/statuaretto_specular.jpg',
|
|
normalMap: '/material/flooring/statuaretto/statuaretto_normal.jpg',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.35,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-tile20',
|
|
label: 'Mosaic Tile',
|
|
category: 'tile',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Floor tile finish',
|
|
previewThumbnailUrl: '/material/flooring/tile_mosaic/tile_mosaic_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/tile_mosaic/tile_mosaic_basecolor.webp',
|
|
aoMap: '/material/flooring/tile_mosaic/tile_mosaic_ambientocclusion.webp',
|
|
metalnessMap: '/material/flooring/tile_mosaic/tile_mosaic_metallic.webp',
|
|
normalMap: '/material/flooring/tile_mosaic/tile_mosaic_normal.webp',
|
|
roughnessMap: '/material/flooring/tile_mosaic/tile_mosaic_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-tile68',
|
|
label: 'Pattern Tile',
|
|
category: 'tile',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Floor tile finish',
|
|
previewThumbnailUrl: '/material/flooring/tile_pattern/tile_pattern_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/tile_pattern/tile_pattern_basecolor.webp',
|
|
aoMap: '/material/flooring/tile_pattern/tile_pattern_ambientocclusion.webp',
|
|
metalnessMap: '/material/flooring/tile_pattern/tile_pattern_metallic.webp',
|
|
normalMap: '/material/flooring/tile_pattern/tile_pattern_normal.webp',
|
|
roughnessMap: '/material/flooring/tile_pattern/tile_pattern_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-woodenceramic2',
|
|
label: 'Wooden Ceramic 2',
|
|
category: 'tile',
|
|
surfaces: ['floor'],
|
|
description: 'Wood-look ceramic flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/wooden_ceramic_2/wooden_ceramic-diffuse.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/wooden_ceramic_2/wooden_ceramic-diffuse.webp',
|
|
aoMap: '/material/flooring/wooden_ceramic_2/wooden_ceramic-ao.webp',
|
|
metalnessMap: '/material/flooring/wooden_ceramic_2/wooden_ceramic-specular.webp',
|
|
normalMap: '/material/flooring/wooden_ceramic_2/wooden_ceramic-normal.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0,
|
|
repeatX: 1.5,
|
|
repeatY: 1.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'flooring-woodparquet76',
|
|
label: 'Wood Parquet',
|
|
category: 'wood',
|
|
surfaces: ['floor'],
|
|
description: 'Wood parquet flooring finish',
|
|
previewThumbnailUrl: '/material/flooring/woodparquet/woodparquet_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/flooring/woodparquet/woodparquet_basecolor.webp',
|
|
aoMap: '/material/flooring/woodparquet/woodparquet_ambientocclusion.webp',
|
|
metalnessMap: '/material/flooring/woodparquet/woodparquet_metallic.webp',
|
|
normalMap: '/material/flooring/woodparquet/woodparquet_normal.webp',
|
|
roughnessMap: '/material/flooring/woodparquet/woodparquet_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'roof-classicshingles',
|
|
label: 'Classic Shingles',
|
|
category: 'roofing',
|
|
surfaces: ['roof'],
|
|
description: 'Classic roof shingle finish',
|
|
previewThumbnailUrl:
|
|
'/material/roofing/roof_shingles_classic/roof_shingles_classic_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/roofing/roof_shingles_classic/roof_shingles_classic_basecolor.webp',
|
|
aoMap:
|
|
'/material/roofing/roof_shingles_classic/roof_shingles_classic_ambientocclusion.webp',
|
|
metalnessMap: '/material/roofing/roof_shingles_classic/roof_shingles_classic_metallic.webp',
|
|
normalMap: '/material/roofing/roof_shingles_classic/roof_shingles_classic_normal.webp',
|
|
roughnessMap:
|
|
'/material/roofing/roof_shingles_classic/roof_shingles_classic_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 1,
|
|
metalness: 0.15,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'roof-claytiles',
|
|
label: 'Clay Tiles',
|
|
category: 'roofing',
|
|
surfaces: ['roof'],
|
|
description: 'Clay roof tile finish',
|
|
previewThumbnailUrl: '/material/roofing/roof_tiles_clay/roof_tiles_clay_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/roofing/roof_tiles_clay/roof_tiles_clay_basecolor.webp',
|
|
aoMap: '/material/roofing/roof_tiles_clay/roof_tiles_clay_ambientocclusion.webp',
|
|
metalnessMap: '/material/roofing/roof_tiles_clay/roof_tiles_clay_metallic.png',
|
|
normalMap: '/material/roofing/roof_tiles_clay/roof_tiles_clay_normal.webp',
|
|
roughnessMap: '/material/roofing/roof_tiles_clay/roof_tiles_clay_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 1,
|
|
metalness: 0.1,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'roof-terracottatiles',
|
|
label: 'Terracotta Tiles',
|
|
category: 'roofing',
|
|
surfaces: ['roof'],
|
|
description: 'Terracotta roof tile finish',
|
|
previewThumbnailUrl:
|
|
'/material/roofing/roof_tiles_terracotta/roof_tiles_terracotta_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/roofing/roof_tiles_terracotta/roof_tiles_terracotta_basecolor.webp',
|
|
aoMap:
|
|
'/material/roofing/roof_tiles_terracotta/roof_tiles_terracotta_ambientocclusion.webp',
|
|
metalnessMap: '/material/roofing/roof_tiles_terracotta/roof_tiles_terracotta_metallic.webp',
|
|
normalMap: '/material/roofing/roof_tiles_terracotta/roof_tiles_terracotta_normal.webp',
|
|
roughnessMap:
|
|
'/material/roofing/roof_tiles_terracotta/roof_tiles_terracotta_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 1,
|
|
metalness: 0.1,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'roof-weatheredshingles',
|
|
label: 'Weathered Shingles',
|
|
category: 'roofing',
|
|
surfaces: ['roof'],
|
|
description: 'Weathered roof shingle finish',
|
|
previewThumbnailUrl:
|
|
'/material/roofing/roof_shingles_weathered/roof_shingles_weathered_basecolor.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap:
|
|
'/material/roofing/roof_shingles_weathered/roof_shingles_weathered_basecolor.webp',
|
|
aoMap:
|
|
'/material/roofing/roof_shingles_weathered/roof_shingles_weathered_ambientocclusion.webp',
|
|
metalnessMap:
|
|
'/material/roofing/roof_shingles_weathered/roof_shingles_weathered_metallic.webp',
|
|
normalMap: '/material/roofing/roof_shingles_weathered/roof_shingles_weathered_normal.webp',
|
|
roughnessMap:
|
|
'/material/roofing/roof_shingles_weathered/roof_shingles_weathered_roughness.webp',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 1,
|
|
metalness: 0.1,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-white',
|
|
label: 'White',
|
|
category: 'colors',
|
|
description: 'Clean painted finish',
|
|
previewColor: '#ffffff',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-softwhite',
|
|
label: 'Soft White',
|
|
category: 'colors',
|
|
description: 'Warm off-white painted finish',
|
|
previewColor: '#f2eee6',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#f2eee6',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-cream',
|
|
label: 'Cream',
|
|
category: 'colors',
|
|
description: 'Soft cream painted finish',
|
|
previewColor: '#efe3cc',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#efe3cc',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-beige',
|
|
label: 'Beige',
|
|
category: 'colors',
|
|
description: 'Balanced beige painted finish',
|
|
previewColor: '#d9c7ad',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#d9c7ad',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-lightgrey',
|
|
label: 'Light grey',
|
|
category: 'colors',
|
|
description: 'Cool light grey painted finish',
|
|
previewColor: '#d8d6d1',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#d8d6d1',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-greige',
|
|
label: 'Greige',
|
|
category: 'colors',
|
|
description: 'Neutral greige painted finish',
|
|
previewColor: '#c8c1b8',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c8c1b8',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-midgrey',
|
|
label: 'Mid grey',
|
|
category: 'colors',
|
|
description: 'Neutral mid grey painted finish',
|
|
previewColor: '#8b8a86',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#8b8a86',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-charcoal',
|
|
label: 'Charcoal',
|
|
category: 'colors',
|
|
description: 'Dark charcoal painted finish',
|
|
previewColor: '#4e5257',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#4e5257',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-nearblack',
|
|
label: 'Near-black',
|
|
category: 'colors',
|
|
description: 'Soft near-black painted finish',
|
|
previewColor: '#232322',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#232322',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-blush',
|
|
label: 'Blush',
|
|
category: 'colors',
|
|
description: 'Pale blush painted finish',
|
|
previewColor: '#e8c6c0',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#e8c6c0',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-tomato',
|
|
label: 'Tomato',
|
|
category: 'colors',
|
|
description: 'Warm tomato red painted finish',
|
|
previewColor: '#c0594f',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c0594f',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-brickred',
|
|
label: 'Brick red',
|
|
category: 'colors',
|
|
description: 'Deep brick red painted finish',
|
|
previewColor: '#9e3b34',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#9e3b34',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-oxblood',
|
|
label: 'Oxblood',
|
|
category: 'colors',
|
|
description: 'Dark oxblood painted finish',
|
|
previewColor: '#6f2c2a',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#6f2c2a',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-peach',
|
|
label: 'Peach',
|
|
category: 'colors',
|
|
description: 'Soft peach painted finish',
|
|
previewColor: '#f0c3a0',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#f0c3a0',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-terracotta',
|
|
label: 'Terracotta',
|
|
category: 'colors',
|
|
description: 'Warm terracotta painted finish',
|
|
previewColor: '#c86f4c',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c86f4c',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-burntorange',
|
|
label: 'Burnt orange',
|
|
category: 'colors',
|
|
description: 'Burnt orange painted finish',
|
|
previewColor: '#b25a2c',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#b25a2c',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-clay',
|
|
label: 'Clay',
|
|
category: 'colors',
|
|
description: 'Deep clay painted finish',
|
|
previewColor: '#8f4a2e',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#8f4a2e',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-paleyellow',
|
|
label: 'Pale yellow',
|
|
category: 'colors',
|
|
description: 'Pale yellow painted finish',
|
|
previewColor: '#f2e3b3',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#f2e3b3',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-mustard',
|
|
label: 'Mustard',
|
|
category: 'colors',
|
|
description: 'Warm mustard painted finish',
|
|
previewColor: '#c8a449',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c8a449',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-ochre',
|
|
label: 'Ochre',
|
|
category: 'colors',
|
|
description: 'Warm ochre painted finish',
|
|
previewColor: '#b8852f',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#b8852f',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-gold',
|
|
label: 'Gold',
|
|
category: 'colors',
|
|
description: 'Deep gold painted finish',
|
|
previewColor: '#9c7320',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#9c7320',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-mint',
|
|
label: 'Mint',
|
|
category: 'colors',
|
|
description: 'Soft mint painted finish',
|
|
previewColor: '#cfe0cf',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#cfe0cf',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-sage',
|
|
label: 'Sage',
|
|
category: 'colors',
|
|
description: 'Muted sage painted finish',
|
|
previewColor: '#bcc5b2',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#bcc5b2',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-olive',
|
|
label: 'Olive',
|
|
category: 'colors',
|
|
description: 'Natural olive painted finish',
|
|
previewColor: '#8d9368',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#8d9368',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-forest',
|
|
label: 'Forest',
|
|
category: 'colors',
|
|
description: 'Deep forest green painted finish',
|
|
previewColor: '#4f6b57',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#4f6b57',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-paleteal',
|
|
label: 'Pale teal',
|
|
category: 'colors',
|
|
description: 'Pale teal painted finish',
|
|
previewColor: '#b9d2cf',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#b9d2cf',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-teal',
|
|
label: 'Teal',
|
|
category: 'colors',
|
|
description: 'Balanced teal painted finish',
|
|
previewColor: '#4f8a86',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#4f8a86',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-deepteal',
|
|
label: 'Deep teal',
|
|
category: 'colors',
|
|
description: 'Deep teal painted finish',
|
|
previewColor: '#2f5f5c',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#2f5f5c',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-powderblue',
|
|
label: 'Powder blue',
|
|
category: 'colors',
|
|
description: 'Powder blue painted finish',
|
|
previewColor: '#cddce8',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#cddce8',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-softblue',
|
|
label: 'Soft Blue',
|
|
category: 'colors',
|
|
description: 'Muted blue painted finish',
|
|
previewColor: '#c7d6e3',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c7d6e3',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-sky',
|
|
label: 'Sky',
|
|
category: 'colors',
|
|
description: 'Sky blue painted finish',
|
|
previewColor: '#8fb4d4',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#8fb4d4',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-slateblue',
|
|
label: 'Slate Blue',
|
|
category: 'colors',
|
|
description: 'Muted slate blue painted finish',
|
|
previewColor: '#6f87a4',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#6f87a4',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-royalblue',
|
|
label: 'Royal blue',
|
|
category: 'colors',
|
|
description: 'Royal blue painted finish',
|
|
previewColor: '#3a5a9c',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#3a5a9c',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-navy',
|
|
label: 'Navy',
|
|
category: 'colors',
|
|
description: 'Classic navy painted finish',
|
|
previewColor: '#2f4865',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#2f4865',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-lavender',
|
|
label: 'Lavender',
|
|
category: 'colors',
|
|
description: 'Soft lavender painted finish',
|
|
previewColor: '#c9c2da',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c9c2da',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-plum',
|
|
label: 'Plum',
|
|
category: 'colors',
|
|
description: 'Muted plum painted finish',
|
|
previewColor: '#6d4a63',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#6d4a63',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-aubergine',
|
|
label: 'Aubergine',
|
|
category: 'colors',
|
|
description: 'Deep aubergine painted finish',
|
|
previewColor: '#594354',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#594354',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-petal',
|
|
label: 'Petal',
|
|
category: 'colors',
|
|
description: 'Pale petal pink painted finish',
|
|
previewColor: '#f0d3da',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#f0d3da',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-rose',
|
|
label: 'Rose',
|
|
category: 'colors',
|
|
description: 'Muted rose painted finish',
|
|
previewColor: '#cf8fa6',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#cf8fa6',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-dustyrose',
|
|
label: 'Dusty Rose',
|
|
category: 'colors',
|
|
description: 'Muted rose painted finish',
|
|
previewColor: '#c48a8d',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c48a8d',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-berry',
|
|
label: 'Berry',
|
|
category: 'colors',
|
|
description: 'Deep berry painted finish',
|
|
previewColor: '#8f4a5a',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#8f4a5a',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-sand',
|
|
label: 'Sand',
|
|
category: 'colors',
|
|
description: 'Warm sand painted finish',
|
|
previewColor: '#ddccae',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#ddccae',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-tan',
|
|
label: 'Tan',
|
|
category: 'colors',
|
|
description: 'Natural tan painted finish',
|
|
previewColor: '#c4a87f',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c4a87f',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-taupe',
|
|
label: 'Taupe',
|
|
category: 'colors',
|
|
description: 'Earthy taupe painted finish',
|
|
previewColor: '#8f7a64',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#8f7a64',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-espresso',
|
|
label: 'Espresso',
|
|
category: 'colors',
|
|
description: 'Dark espresso painted finish',
|
|
previewColor: '#4a382c',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#4a382c',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-metal',
|
|
label: 'Metal',
|
|
category: 'metal',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Brushed metal finish',
|
|
previewColor: '#c0c0c0',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c7ccd2',
|
|
roughness: 0.26,
|
|
metalness: 0.82,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: false,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'preset-glass',
|
|
label: 'Glass',
|
|
category: 'glass',
|
|
description: 'Light glass finish',
|
|
previewColor: '#87ceeb',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#87ceeb',
|
|
roughness: 0.1,
|
|
metalness: 0.1,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0.02,
|
|
transparent: true,
|
|
flipY: true,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
// FrontSide — DoubleSide on a NodeMaterial poisons the WebGPU MRT scene
|
|
// pass (window/door glass relies on this). It's the only glass we use.
|
|
side: 0,
|
|
opacity: 0.3,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'fabric-linen',
|
|
label: 'Linen',
|
|
category: 'fabric',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Natural linen weave',
|
|
previewThumbnailUrl: '/material/fabric/linen_hikari_fabric/linen_hikari_fabric_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/fabric/linen_hikari_fabric/linen_hikari_fabric_basecolor_512.ktx2',
|
|
normalMap: '/material/fabric/linen_hikari_fabric/linen_hikari_fabric_normal_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.85,
|
|
metalness: 0,
|
|
repeatX: 2,
|
|
repeatY: 2,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'fabric-cotton',
|
|
label: 'Cotton',
|
|
category: 'fabric',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Plain cotton weave',
|
|
previewThumbnailUrl: '/material/fabric/blue_cotton/blue_cotton_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/fabric/blue_cotton/blue_cotton_basecolor_512.ktx2',
|
|
normalMap: '/material/fabric/blue_cotton/blue_cotton_normal_512.ktx2',
|
|
roughnessMap: '/material/fabric/blue_cotton/blue_cotton_roughness_512.ktx2',
|
|
aoMap: '/material/fabric/blue_cotton/blue_cotton_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.85,
|
|
metalness: 0,
|
|
repeatX: 2,
|
|
repeatY: 2,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'fabric-velvet',
|
|
label: 'Velvet',
|
|
category: 'fabric',
|
|
surfaces: ['furniture'],
|
|
description: 'Velvet with a soft sheen',
|
|
previewThumbnailUrl: '/material/fabric/red_velvet/red_velvet_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/fabric/red_velvet/red_velvet_basecolor_512.ktx2',
|
|
normalMap: '/material/fabric/red_velvet/red_velvet_normal_512.ktx2',
|
|
roughnessMap: '/material/fabric/red_velvet/red_velvet_roughness_512.ktx2',
|
|
aoMap: '/material/fabric/red_velvet/red_velvet_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.6,
|
|
metalness: 0,
|
|
repeatX: 2.5,
|
|
repeatY: 2.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'fabric-wool',
|
|
label: 'Wool',
|
|
category: 'fabric',
|
|
surfaces: ['furniture'],
|
|
description: 'Matte wool felt',
|
|
previewThumbnailUrl: '/material/fabric/white_wool/white_wool_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/fabric/white_wool/white_wool_basecolor_512.ktx2',
|
|
normalMap: '/material/fabric/white_wool/white_wool_normal_512.ktx2',
|
|
roughnessMap: '/material/fabric/white_wool/white_wool_roughness_512.ktx2',
|
|
aoMap: '/material/fabric/white_wool/white_wool_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 2.5,
|
|
repeatY: 2.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'fabric-suede',
|
|
label: 'Suede',
|
|
category: 'fabric',
|
|
surfaces: ['furniture'],
|
|
description: 'Matte suede nap',
|
|
previewThumbnailUrl: '/material/fabric/suede/suede_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/fabric/suede/suede_basecolor_512.ktx2',
|
|
normalMap: '/material/fabric/suede/suede_normal_512.ktx2',
|
|
roughnessMap: '/material/fabric/suede/suede_roughness_512.ktx2',
|
|
aoMap: '/material/fabric/suede/suede_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 2,
|
|
repeatY: 2,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'fabric-boucle',
|
|
label: 'Bouclé',
|
|
category: 'fabric',
|
|
surfaces: ['furniture'],
|
|
description: 'Looped bouclé upholstery',
|
|
previewThumbnailUrl: '/material/fabric/wool_boucle/wool_boucle_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/fabric/wool_boucle/wool_boucle_basecolor_512.ktx2',
|
|
normalMap: '/material/fabric/wool_boucle/wool_boucle_normal_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 3.3,
|
|
repeatY: 3.3,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'leather-black',
|
|
label: 'Black Leather',
|
|
category: 'leather',
|
|
surfaces: ['furniture'],
|
|
description: 'Smooth black leather',
|
|
previewThumbnailUrl: '/material/leather/black_leather/black_leather_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/leather/black_leather/black_leather_basecolor_512.ktx2',
|
|
normalMap: '/material/leather/black_leather/black_leather_normal_512.ktx2',
|
|
roughnessMap: '/material/leather/black_leather/black_leather_roughness_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 1.67,
|
|
repeatY: 1.67,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'leather-calf',
|
|
label: 'Calf Leather',
|
|
category: 'leather',
|
|
surfaces: ['furniture'],
|
|
description: 'Pebbled calf leather',
|
|
previewThumbnailUrl: '/material/leather/calf_leather/calf_leather_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/leather/calf_leather/calf_leather_basecolor_512.ktx2',
|
|
normalMap: '/material/leather/calf_leather/calf_leather_normal_512.ktx2',
|
|
roughnessMap: '/material/leather/calf_leather/calf_leather_roughness_512.ktx2',
|
|
aoMap: '/material/leather/calf_leather/calf_leather_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 2,
|
|
repeatY: 2,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'concrete-plaster',
|
|
label: 'Painted Plaster',
|
|
category: 'concrete',
|
|
surfaces: ['wall', 'ceiling'],
|
|
description: 'Smooth painted plaster wall',
|
|
previewThumbnailUrl: '/material/concrete/plaster_painted/plaster_painted_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/concrete/plaster_painted/plaster_painted_basecolor_512.ktx2',
|
|
normalMap: '/material/concrete/plaster_painted/plaster_painted_normal_512.ktx2',
|
|
roughnessMap: '/material/concrete/plaster_painted/plaster_painted_roughness_512.ktx2',
|
|
aoMap: '/material/concrete/plaster_painted/plaster_painted_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.85,
|
|
metalness: 0,
|
|
repeatX: 0.67,
|
|
repeatY: 0.67,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'concrete-polished',
|
|
label: 'Polished Concrete',
|
|
category: 'concrete',
|
|
surfaces: ['floor', 'wall'],
|
|
description: 'Polished concrete floor',
|
|
previewThumbnailUrl: '/material/concrete/concrete_polished/concrete_polished_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/concrete/concrete_polished/concrete_polished_basecolor_512.ktx2',
|
|
normalMap: '/material/concrete/concrete_polished/concrete_polished_normal_512.ktx2',
|
|
roughnessMap: '/material/concrete/concrete_polished/concrete_polished_roughness_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.5,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'concrete-raw',
|
|
label: 'Raw Concrete',
|
|
category: 'concrete',
|
|
surfaces: ['wall', 'floor', 'outdoor'],
|
|
description: 'Board-formed raw concrete',
|
|
previewThumbnailUrl: '/material/concrete/concrete_raw/concrete_raw_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/concrete/concrete_raw/concrete_raw_basecolor_512.ktx2',
|
|
normalMap: '/material/concrete/concrete_raw/concrete_raw_normal_512.ktx2',
|
|
roughnessMap: '/material/concrete/concrete_raw/concrete_raw_roughness_512.ktx2',
|
|
aoMap: '/material/concrete/concrete_raw/concrete_raw_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.8,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'concrete-plate',
|
|
label: 'Concrete Plate',
|
|
category: 'concrete',
|
|
surfaces: ['wall', 'floor'],
|
|
description: 'Smooth cast concrete plate',
|
|
previewThumbnailUrl: '/material/concrete/concrete_plate/concrete_plate_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/concrete/concrete_plate/concrete_plate_basecolor_512.ktx2',
|
|
normalMap: '/material/concrete/concrete_plate/concrete_plate_normal_512.ktx2',
|
|
roughnessMap: '/material/concrete/concrete_plate/concrete_plate_roughness_512.ktx2',
|
|
aoMap: '/material/concrete/concrete_plate/concrete_plate_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.8,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'concrete-stucco',
|
|
label: 'White Stucco',
|
|
category: 'concrete',
|
|
surfaces: ['wall', 'outdoor'],
|
|
description: 'Exterior stucco render',
|
|
previewThumbnailUrl: '/material/concrete/white_stucco/white_stucco_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/concrete/white_stucco/white_stucco_basecolor_512.ktx2',
|
|
normalMap: '/material/concrete/white_stucco/white_stucco_normal_512.ktx2',
|
|
roughnessMap: '/material/concrete/white_stucco/white_stucco_roughness_512.ktx2',
|
|
aoMap: '/material/concrete/white_stucco/white_stucco_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'concrete-drywall',
|
|
label: 'Prepared Drywall',
|
|
category: 'concrete',
|
|
surfaces: ['wall', 'ceiling'],
|
|
description: 'Smooth prepared drywall ready for paint',
|
|
previewThumbnailUrl: '/material/concrete/prepared_drywall/prepared_drywall_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/concrete/prepared_drywall/prepared_drywall_basecolor_512.ktx2',
|
|
normalMap: '/material/concrete/prepared_drywall/prepared_drywall_normal_512.ktx2',
|
|
roughnessMap: '/material/concrete/prepared_drywall/prepared_drywall_roughness_512.ktx2',
|
|
aoMap: '/material/concrete/prepared_drywall/prepared_drywall_ao_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.9,
|
|
metalness: 0,
|
|
repeatX: 0.5,
|
|
repeatY: 0.5,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'metal-copper',
|
|
label: 'Copper',
|
|
category: 'metal',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Warm copper',
|
|
previewThumbnailUrl: '/material/metal/copper_metal/copper_metal_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/metal/copper_metal/copper_metal_basecolor_512.ktx2',
|
|
normalMap: '/material/metal/copper_metal/copper_metal_normal_512.ktx2',
|
|
roughnessMap: '/material/metal/copper_metal/copper_metal_roughness_512.ktx2',
|
|
metalnessMap: '/material/metal/copper_metal/copper_metal_metallic_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.4,
|
|
metalness: 0.6,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'metal-polished',
|
|
label: 'Polished Metal',
|
|
category: 'metal',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Polished stainless steel',
|
|
previewThumbnailUrl: '/material/metal/polished_metal/polished_metal_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap: '/material/metal/polished_metal/polished_metal_basecolor_512.ktx2',
|
|
normalMap: '/material/metal/polished_metal/polished_metal_normal_512.ktx2',
|
|
roughnessMap: '/material/metal/polished_metal/polished_metal_roughness_512.ktx2',
|
|
aoMap: '/material/metal/polished_metal/polished_metal_ao_512.ktx2',
|
|
metalnessMap: '/material/metal/polished_metal/polished_metal_metallic_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.3,
|
|
metalness: 0.6,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
id: 'metal-steel',
|
|
label: 'Brushed Steel',
|
|
category: 'metal',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Brushed stainless steel',
|
|
previewThumbnailUrl:
|
|
'/material/metal/stainless_steel_brushed/stainless_steel_brushed_thumb.webp',
|
|
preset: {
|
|
maps: {
|
|
albedoMap:
|
|
'/material/metal/stainless_steel_brushed/stainless_steel_brushed_basecolor_512.ktx2',
|
|
normalMap:
|
|
'/material/metal/stainless_steel_brushed/stainless_steel_brushed_normal_512.ktx2',
|
|
roughnessMap:
|
|
'/material/metal/stainless_steel_brushed/stainless_steel_brushed_roughness_512.ktx2',
|
|
},
|
|
mapProperties: {
|
|
color: '#ffffff',
|
|
roughness: 0.45,
|
|
metalness: 0.6,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
// Parameter-only metal (no texture maps) — a worked example of a non-PBR
|
|
// catalog finish driven purely by three.js material settings.
|
|
id: 'metal-brass',
|
|
label: 'Brass',
|
|
category: 'metal',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Polished brass (flat metal, no maps)',
|
|
previewColor: '#b08d57',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#b08d57',
|
|
roughness: 0.35,
|
|
metalness: 0.9,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
// Parameter-only chrome (no texture maps) — moderate metalness so it reads
|
|
// as bright metal under direct/ambient light without needing an env map.
|
|
id: 'metal-chrome',
|
|
label: 'Chrome',
|
|
category: 'metal',
|
|
surfaces: ['furniture', 'wall'],
|
|
description: 'Polished chrome (flat metal, no maps)',
|
|
previewColor: '#c8ccce',
|
|
preset: {
|
|
maps: {},
|
|
mapProperties: {
|
|
color: '#c8ccce',
|
|
roughness: 0.2,
|
|
metalness: 0.6,
|
|
repeatX: 1,
|
|
repeatY: 1,
|
|
rotation: 0,
|
|
wrapS: 'Repeat',
|
|
wrapT: 'Repeat',
|
|
normalScaleX: 1,
|
|
normalScaleY: 1,
|
|
emissiveIntensity: 1,
|
|
displacementScale: 0,
|
|
transparent: false,
|
|
flipY: false,
|
|
bumpScale: 1,
|
|
emissiveColor: '#000000',
|
|
aoMapIntensity: 1,
|
|
side: 0,
|
|
opacity: 1,
|
|
lightMapIntensity: 1,
|
|
},
|
|
},
|
|
},
|
|
]
|
|
|
|
export function getMaterialsForCategory(category: MaterialCategory): MaterialCatalogItem[] {
|
|
return MATERIAL_CATALOG.filter((item) => item.category === category)
|
|
}
|
|
|
|
export function getCatalogMaterialById(id?: string): MaterialCatalogItem | undefined {
|
|
if (!id) return undefined
|
|
return MATERIAL_CATALOG.find((item) => item.id === id)
|
|
}
|
|
|
|
export const LIBRARY_MATERIAL_REF_PREFIX = 'library:'
|
|
export const SCENE_MATERIAL_REF_PREFIX = 'scene:'
|
|
|
|
export function toLibraryMaterialRef(id: string) {
|
|
return `${LIBRARY_MATERIAL_REF_PREFIX}${id}`
|
|
}
|
|
|
|
export function toSceneMaterialRef(id: string) {
|
|
return `${SCENE_MATERIAL_REF_PREFIX}${id}`
|
|
}
|
|
|
|
export function getLibraryMaterialIdFromRef(materialRef?: string | null) {
|
|
if (!materialRef) return null
|
|
if (!materialRef.startsWith(LIBRARY_MATERIAL_REF_PREFIX)) return null
|
|
return materialRef.slice(LIBRARY_MATERIAL_REF_PREFIX.length)
|
|
}
|
|
|
|
export function getSceneMaterialIdFromRef(materialRef?: string | null): string | null {
|
|
if (!materialRef || !materialRef.startsWith(SCENE_MATERIAL_REF_PREFIX)) return null
|
|
return materialRef.slice(SCENE_MATERIAL_REF_PREFIX.length)
|
|
}
|
|
|
|
export type MaterialRef = string
|
|
|
|
export type ParsedMaterialRef = { kind: 'library'; id: string } | { kind: 'scene'; id: string }
|
|
|
|
export function parseMaterialRef(ref?: string | null): ParsedMaterialRef | null {
|
|
const lib = getLibraryMaterialIdFromRef(ref)
|
|
if (lib) return { kind: 'library', id: lib }
|
|
const scene = getSceneMaterialIdFromRef(ref)
|
|
if (scene) return { kind: 'scene', id: scene }
|
|
return null
|
|
}
|
|
|
|
export function getMaterialPresetByRef(materialRef?: string | null): MaterialPresetPayload | null {
|
|
const materialId = getLibraryMaterialIdFromRef(materialRef)
|
|
if (!materialId) return null
|
|
return getCatalogMaterialById(materialId)?.preset ?? null
|
|
}
|