feat(render): Import custom 3D bed model and texture into hub room
This commit is contained in:
parent
2d8e702bf3
commit
b3b69f997e
9 changed files with 1138 additions and 13 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -24,8 +24,9 @@ run_log.txt
|
||||||
|
|
||||||
# Debugging, Autonomous Testing & Screenshots
|
# Debugging, Autonomous Testing & Screenshots
|
||||||
screenshots/
|
screenshots/
|
||||||
*.png
|
/*.png
|
||||||
*.json
|
/*.json
|
||||||
|
!assets/**
|
||||||
|
|
||||||
# OS / Editor files
|
# OS / Editor files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
|
||||||
398
assets/models/Bed.fbx
Normal file
398
assets/models/Bed.fbx
Normal file
|
|
@ -0,0 +1,398 @@
|
||||||
|
; FBX 7.3.0 project file
|
||||||
|
; Created by the Blockbench FBX Exporter
|
||||||
|
; ----------------------------------------------------
|
||||||
|
;
|
||||||
|
|
||||||
|
FBXHeaderExtension: {
|
||||||
|
FBXHeaderVersion: 1003
|
||||||
|
FBXVersion: 7300
|
||||||
|
EncryptionType: 0
|
||||||
|
CreationTimeStamp: {
|
||||||
|
Version: 1000
|
||||||
|
Year: 2026
|
||||||
|
Month: 10
|
||||||
|
Day: 7
|
||||||
|
Hour: 18
|
||||||
|
Minute: 44
|
||||||
|
Second: 12
|
||||||
|
Millisecond: 852
|
||||||
|
}
|
||||||
|
Creator: "Blockbench 5.1.6"
|
||||||
|
SceneInfo: "SceneInfo::GlobalInfo", "UserData" {
|
||||||
|
Type: "UserData"
|
||||||
|
Version: 100
|
||||||
|
MetaData: {
|
||||||
|
Version: 100
|
||||||
|
Title: ""
|
||||||
|
Subject: ""
|
||||||
|
Author: ""
|
||||||
|
Keywords: ""
|
||||||
|
Revision: ""
|
||||||
|
Comment: ""
|
||||||
|
}
|
||||||
|
Properties70: {
|
||||||
|
P: "DocumentUrl", "KString", "Url", "", "C:\Users\Blockbench\foobar.fbx"
|
||||||
|
P: "SrcDocumentUrl", "KString", "Url", "", "C:\Users\Blockbench\foobar.fbx"
|
||||||
|
P: "Original", "Compound", "", ""
|
||||||
|
P: "Original|ApplicationVendor", "KString", "", "", "Blockbench"
|
||||||
|
P: "Original|ApplicationName", "KString", "", "", "Blockbench FBX Exporter"
|
||||||
|
P: "Original|ApplicationVersion", "KString", "", "", "5.1.6"
|
||||||
|
P: "Original|DateTime_GMT", "DateTime", "", "", "01/01/1970 00:00:00.000"
|
||||||
|
P: "Original|FileName", "KString", "", "", "/foobar.fbx"
|
||||||
|
P: "LastSaved", "Compound", "", ""
|
||||||
|
P: "LastSaved|ApplicationVendor", "KString", "", "", "Blockbench"
|
||||||
|
P: "LastSaved|ApplicationName", "KString", "", "", "Blockbench FBX Exporter"
|
||||||
|
P: "LastSaved|ApplicationVersion", "KString", "", "", "5.1.6"
|
||||||
|
P: "LastSaved|DateTime_GMT", "DateTime", "", "", "01/01/1970 00:00:00.000"
|
||||||
|
P: "Original|ApplicationNativeFile", "KString", "", "", ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FileId: "iVFoobar"
|
||||||
|
CreationTime: "2026-10-07 15:44:12:852"
|
||||||
|
Creator: "Made with Blockbench"
|
||||||
|
GlobalSettings: {
|
||||||
|
Version: 1000
|
||||||
|
Properties70: {
|
||||||
|
P: "UpAxis", "int", "Integer", "",1
|
||||||
|
P: "UpAxisSign", "int", "Integer", "",1
|
||||||
|
P: "FrontAxis", "int", "Integer", "",2
|
||||||
|
P: "FrontAxisSign", "int", "Integer", "",1
|
||||||
|
P: "CoordAxis", "int", "Integer", "",0
|
||||||
|
P: "CoordAxisSign", "int", "Integer", "",1
|
||||||
|
P: "OriginalUpAxis", "int", "Integer", "",-1
|
||||||
|
P: "OriginalUpAxisSign", "int", "Integer", "",1
|
||||||
|
P: "UnitScaleFactor", "double", "Number", "",1
|
||||||
|
P: "OriginalUnitScaleFactor", "double", "Number", "",1
|
||||||
|
P: "AmbientColor", "ColorRGB", "Color", "",0,0,0
|
||||||
|
P: "DefaultCamera", "KString", "", "", "Producer Perspective"
|
||||||
|
P: "TimeMode", "enum", "", "",0
|
||||||
|
P: "TimeSpanStart", "KTime", "Time", "",0
|
||||||
|
P: "TimeSpanStop", "KTime", "Time", "",46186158000
|
||||||
|
P: "CustomFrameRate", "double", "Number", "",24
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
; Documents Description
|
||||||
|
;------------------------------------------------------------------
|
||||||
|
|
||||||
|
Documents: {
|
||||||
|
Count: 1
|
||||||
|
Document: 1588043550 {
|
||||||
|
Scene: "Scene"
|
||||||
|
Properties70: {
|
||||||
|
P: "SourceObject", "object", "", ""
|
||||||
|
P: "ActiveAnimStackName", "KString", "", "", ""
|
||||||
|
}
|
||||||
|
RootNode: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
; Document References
|
||||||
|
;------------------------------------------------------------------
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
; Object definitions
|
||||||
|
;------------------------------------------------------------------
|
||||||
|
|
||||||
|
Definitions: {
|
||||||
|
Version: 100
|
||||||
|
Count: 6
|
||||||
|
ObjectType: "GlobalSettings" {
|
||||||
|
Count: 1
|
||||||
|
}
|
||||||
|
ObjectType: "Model" {
|
||||||
|
Count: 1
|
||||||
|
PropertyTemplate: "FbxNode" {
|
||||||
|
Properties70: {
|
||||||
|
P: "QuaternionInterpolate", "enum", "", "",0
|
||||||
|
P: "RotationOffset", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "RotationPivot", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "TranslationActive", "bool", "", "",0
|
||||||
|
P: "TranslationMin", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "TranslationMax", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "TranslationMinX", "bool", "", "",0
|
||||||
|
P: "TranslationMinY", "bool", "", "",0
|
||||||
|
P: "TranslationMinZ", "bool", "", "",0
|
||||||
|
P: "TranslationMaxX", "bool", "", "",0
|
||||||
|
P: "TranslationMaxY", "bool", "", "",0
|
||||||
|
P: "TranslationMaxZ", "bool", "", "",0
|
||||||
|
P: "RotationOrder", "enum", "", "",5
|
||||||
|
P: "RotationSpaceForLimitOnly", "bool", "", "",0
|
||||||
|
P: "RotationStiffnessX", "double", "Number", "",0
|
||||||
|
P: "RotationStiffnessY", "double", "Number", "",0
|
||||||
|
P: "RotationStiffnessZ", "double", "Number", "",0
|
||||||
|
P: "AxisLen", "double", "Number", "",10
|
||||||
|
P: "PreRotation", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "PostRotation", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "RotationActive", "bool", "", "",0
|
||||||
|
P: "RotationMin", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "RotationMax", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "RotationMinX", "bool", "", "",0
|
||||||
|
P: "RotationMinY", "bool", "", "",0
|
||||||
|
P: "RotationMinZ", "bool", "", "",0
|
||||||
|
P: "RotationMaxX", "bool", "", "",0
|
||||||
|
P: "RotationMaxY", "bool", "", "",0
|
||||||
|
P: "RotationMaxZ", "bool", "", "",0
|
||||||
|
P: "InheritType", "enum", "", "",0
|
||||||
|
P: "ScalingActive", "bool", "", "",0
|
||||||
|
P: "ScalingMin", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "ScalingMax", "Vector3D", "Vector", "",1,1,1
|
||||||
|
P: "ScalingMinX", "bool", "", "",0
|
||||||
|
P: "ScalingMinY", "bool", "", "",0
|
||||||
|
P: "ScalingMinZ", "bool", "", "",0
|
||||||
|
P: "ScalingMaxX", "bool", "", "",0
|
||||||
|
P: "ScalingMaxY", "bool", "", "",0
|
||||||
|
P: "ScalingMaxZ", "bool", "", "",0
|
||||||
|
P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1
|
||||||
|
P: "MinDampRangeX", "double", "Number", "",0
|
||||||
|
P: "MinDampRangeY", "double", "Number", "",0
|
||||||
|
P: "MinDampRangeZ", "double", "Number", "",0
|
||||||
|
P: "MaxDampRangeX", "double", "Number", "",0
|
||||||
|
P: "MaxDampRangeY", "double", "Number", "",0
|
||||||
|
P: "MaxDampRangeZ", "double", "Number", "",0
|
||||||
|
P: "MinDampStrengthX", "double", "Number", "",0
|
||||||
|
P: "MinDampStrengthY", "double", "Number", "",0
|
||||||
|
P: "MinDampStrengthZ", "double", "Number", "",0
|
||||||
|
P: "MaxDampStrengthX", "double", "Number", "",0
|
||||||
|
P: "MaxDampStrengthY", "double", "Number", "",0
|
||||||
|
P: "MaxDampStrengthZ", "double", "Number", "",0
|
||||||
|
P: "PreferedAngleX", "double", "Number", "",0
|
||||||
|
P: "PreferedAngleY", "double", "Number", "",0
|
||||||
|
P: "PreferedAngleZ", "double", "Number", "",0
|
||||||
|
P: "LookAtProperty", "object", "", ""
|
||||||
|
P: "UpVectorProperty", "object", "", ""
|
||||||
|
P: "Show", "bool", "", "",1
|
||||||
|
P: "NegativePercentShapeSupport", "bool", "", "",1
|
||||||
|
P: "DefaultAttributeIndex", "int", "Integer", "",-1
|
||||||
|
P: "Freeze", "bool", "", "",0
|
||||||
|
P: "LODBox", "bool", "", "",0
|
||||||
|
P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0
|
||||||
|
P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0
|
||||||
|
P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1
|
||||||
|
P: "Visibility", "Visibility", "", "A",1
|
||||||
|
P: "Visibility Inheritance", "Visibility Inheritance", "", "",1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ObjectType: "Geometry" {
|
||||||
|
Count: 1
|
||||||
|
PropertyTemplate: "FbxMesh" {
|
||||||
|
Properties70: {
|
||||||
|
P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8
|
||||||
|
P: "BBoxMin", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "BBoxMax", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "Primary Visibility", "bool", "", "",1
|
||||||
|
P: "Casts Shadows", "bool", "", "",1
|
||||||
|
P: "Receive Shadows", "bool", "", "",1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ObjectType: "Material" {
|
||||||
|
Count: 1
|
||||||
|
PropertyTemplate: "FbxSurfaceLambert" {
|
||||||
|
Properties70: {
|
||||||
|
P: "ShadingModel", "KString", "", "", "Lambert"
|
||||||
|
P: "MultiLayer", "bool", "", "",0
|
||||||
|
P: "EmissiveColor", "Color", "", "A",0,0,0
|
||||||
|
P: "EmissiveFactor", "Number", "", "A",1
|
||||||
|
P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2
|
||||||
|
P: "AmbientFactor", "Number", "", "A",1
|
||||||
|
P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8
|
||||||
|
P: "DiffuseFactor", "Number", "", "A",1
|
||||||
|
P: "Bump", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "NormalMap", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "BumpFactor", "double", "Number", "",1
|
||||||
|
P: "TransparentColor", "Color", "", "A",0,0,0
|
||||||
|
P: "TransparencyFactor", "Number", "", "A",0
|
||||||
|
P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0
|
||||||
|
P: "DisplacementFactor", "double", "Number", "",1
|
||||||
|
P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0
|
||||||
|
P: "VectorDisplacementFactor", "double", "Number", "",1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ObjectType: "Texture" {
|
||||||
|
Count: 1
|
||||||
|
PropertyTemplate: "FbxFileTexture" {
|
||||||
|
Properties70: {
|
||||||
|
P: "TextureTypeUse", "enum", "", "",0
|
||||||
|
P: "Texture alpha", "Number", "", "A",1
|
||||||
|
P: "CurrentMappingType", "enum", "", "",0
|
||||||
|
P: "WrapModeU", "enum", "", "",0
|
||||||
|
P: "WrapModeV", "enum", "", "",0
|
||||||
|
P: "UVSwap", "bool", "", "",0
|
||||||
|
P: "PremultiplyAlpha", "bool", "", "",1
|
||||||
|
P: "Translation", "Vector", "", "A",0,0,0
|
||||||
|
P: "Rotation", "Vector", "", "A",0,0,0
|
||||||
|
P: "Scaling", "Vector", "", "A",1,1,1
|
||||||
|
P: "TextureRotationPivot", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "TextureScalingPivot", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "CurrentTextureBlendMode", "enum", "", "",1
|
||||||
|
P: "UVSet", "KString", "", "", "default"
|
||||||
|
P: "UseMaterial", "bool", "", "",0
|
||||||
|
P: "UseMipMap", "bool", "", "",0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ObjectType: "Video" {
|
||||||
|
Count: 1
|
||||||
|
PropertyTemplate: "FbxVideo" {
|
||||||
|
Properties70: {
|
||||||
|
P: "ImageSequence", "bool", "", "",0
|
||||||
|
P: "ImageSequenceOffset", "int", "Integer", "",0
|
||||||
|
P: "FrameRate", "double", "Number", "",0
|
||||||
|
P: "LastFrame", "int", "Integer", "",0
|
||||||
|
P: "Width", "int", "Integer", "",0
|
||||||
|
P: "Height", "int", "Integer", "",0
|
||||||
|
P: "Path", "KString", "XRefUrl", "", ""
|
||||||
|
P: "StartFrame", "int", "Integer", "",0
|
||||||
|
P: "StopFrame", "int", "Integer", "",0
|
||||||
|
P: "PlaySpeed", "double", "Number", "",0
|
||||||
|
P: "Offset", "KTime", "Time", "",0
|
||||||
|
P: "InterlaceMode", "enum", "", "",0
|
||||||
|
P: "FreeRunning", "bool", "", "",0
|
||||||
|
P: "Loop", "bool", "", "",0
|
||||||
|
P: "AccessMode", "enum", "", "",0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
; Object properties
|
||||||
|
;------------------------------------------------------------------
|
||||||
|
|
||||||
|
Objects: {
|
||||||
|
Model: 70061392, "Model::mesh", "Mesh" {
|
||||||
|
Version: 232
|
||||||
|
Properties70: {
|
||||||
|
P: "RotationActive", "bool", "", "",1
|
||||||
|
P: "InheritType", "enum", "", "",1
|
||||||
|
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "Lcl Translation", "Lcl Translation", "", "A",0,-3.125,-6.25
|
||||||
|
P: "RotationPivot", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0
|
||||||
|
P: "RotationOrder", "enum", "", "",5
|
||||||
|
P: "DefaultAttributeIndex", "int", "Integer", "",0
|
||||||
|
}
|
||||||
|
Shading: Y
|
||||||
|
Culling: "CullingOff"
|
||||||
|
}
|
||||||
|
Geometry: 79347176, "Geometry::mesh", "Mesh" {
|
||||||
|
Vertices: *240 {
|
||||||
|
a: 40.625,32.8125,40.625,40.625,25,-40.625,40.625,17.1875,40.625,40.625,17.1875,-40.625,-40.625,32.8125,40.625,-40.625,25,-40.625,-40.625,17.1875,40.625,-40.625,17.1875,-40.625,-37.5,15.625,-37.5,-37.5,15.625,-43.75,-37.5,3.125,-37.5,-37.5,3.125,-43.75,-43.75,15.625,-37.5,-43.75,15.625,-43.75,-43.75,3.125,-37.5,-43.75,3.125,-43.75,43.75,15.625,-37.5,43.75,15.625,-43.75,43.75,3.125,-37.5,43.75,3.125,-43.75,37.5,15.625,-37.5,37.5,15.625,-43.75,37.5,3.125,-37.5,37.5,3.125,-43.75,43.75,15.625,56.25,43.75,15.625,50,43.75,3.125,56.25,43.75,3.125,50,37.5,15.625,56.25,37.5,15.625,50,37.5,3.125,56.25,37.5,3.125,50,-37.5,15.625,56.25,-37.5,15.625,50,-37.5,3.125,56.25,-37.5,3.125,50,-43.75,15.625,56.25,-43.75,15.625,50,-43.75,3.125,56.25,-43.75,3.125,50,43.75,21.875,56.25,43.75,21.875,-43.75,43.75,15.625,56.25,43.75,15.625,-43.75,-43.75,21.875,56.25,-43.75,21.875,-43.75,-43.75,15.625,56.25,-43.75,15.625,-43.75,43.75,53.125,56.25,43.75,53.125,53.125,43.75,21.875,56.25,43.75,21.875,53.125,-43.75,53.125,56.25,-43.75,53.125,53.125,-43.75,21.875,56.25,-43.75,21.875,53.125,15.000000000000002,31.25,46.56249999999999,15.000000000000002,31.25,31.562500000000004,-15.000000000000002,31.25,46.56249999999999,-15.000000000000002,31.25,31.562500000000004,15.000000000000002,21.875,46.56249999999999,15.000000000000002,21.875,31.562500000000004,-15.000000000000002,21.875,46.56249999999999,-15.000000000000002,21.875,31.562500000000004,-25,26.5625,46.56249999999999,-25,26.5625,46.56249999999999,-25,26.5625,31.562500000000004,-25,26.5625,31.562500000000004,25,26.5625,46.56249999999999,25,26.5625,46.56249999999999,25,26.5625,31.562500000000004,25,26.5625,31.562500000000004,15.000000000000002,26.5625,26.5625,15.000000000000002,26.5625,26.5625,-15.000000000000002,26.5625,26.5625,-15.000000000000002,26.5625,26.5625,15.000000000000002,26.5625,51.5625,15.000000000000002,26.5625,51.5625,-15.000000000000002,26.5625,51.5625,-15.000000000000002,26.5625,51.5625
|
||||||
|
}
|
||||||
|
PolygonVertexIndex: *264 {
|
||||||
|
a: 1,0,2,-4,6,4,5,-8,4,0,1,-6,3,2,6,-8,2,0,4,-7,5,1,3,-8,9,8,10,-12,14,12,13,-16,12,8,9,-14,11,10,14,-16,10,8,12,-15,13,9,11,-16,17,16,18,-20,22,20,21,-24,20,16,17,-22,19,18,22,-24,18,16,20,-23,21,17,19,-24,25,24,26,-28,30,28,29,-32,28,24,25,-30,27,26,30,-32,26,24,28,-31,29,25,27,-32,33,32,34,-36,38,36,37,-40,36,32,33,-38,35,34,38,-40,34,32,36,-39,37,33,35,-40,41,40,42,-44,46,44,45,-48,44,40,41,-46,43,42,46,-48,42,40,44,-47,45,41,43,-48,49,48,50,-52,54,52,53,-56,52,48,49,-54,51,50,54,-56,50,48,52,-55,53,49,51,-56,69,68,71,-71,64,65,67,-67,56,57,59,-59,63,61,60,-63,76,77,79,-79,73,72,75,-75,57,56,69,-72,65,58,59,-68,77,56,58,-80,59,57,73,-76,68,60,61,-71,63,62,64,-67,62,60,76,-79,72,61,63,-75,72,73,70,-72,77,76,68,-70,75,74,66,-68,78,79,64,-66,60,68,-77,62,78,-65,61,72,-71,63,66,-75,56,77,-70,58,65,-80,57,71,-74,59,75,-68
|
||||||
|
}
|
||||||
|
GeometryVersion: 124
|
||||||
|
LayerElementNormal: 0 {
|
||||||
|
Version: 101
|
||||||
|
Name: ""
|
||||||
|
MappingInformationType: "ByPolygon"
|
||||||
|
ReferenceInformationType: "Direct"
|
||||||
|
Normals: *204 {
|
||||||
|
a: 1,0,0,-1,0,0,0,0.9954090291002811,-0.0957124066442578,0,-1,0,0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,0,0,0.42443387623071965,0.9054589359588684,0,-0.42443387623071965,0.9054589359588684,0,0,0.7295372041400855,0.6839411288813295,0,0.7295372041400855,-0.6839411288813295,0.42443387623071965,-0.9054589359588684,0,-0.42443387623071965,-0.9054589359588684,0,0,-0.7295372041400855,0.6839411288813295,0,-0.7295372041400855,-0.6839411288813295,0,0,0,0,0,0,0,0,0,0,0,0,0.3235735780316221,-0.6902902998007938,0.6471471560632436,-0.3235735780316221,-0.6902902998007938,0.6471471560632436,0.3235735780316221,-0.6902902998007938,-0.6471471560632436,-0.3235735780316221,-0.6902902998007938,-0.6471471560632436,0.3235735780316221,0.6902902998007938,0.6471471560632436,-0.3235735780316221,0.6902902998007938,0.6471471560632436,0.3235735780316221,0.6902902998007938,-0.6471471560632436,-0.3235735780316221,0.6902902998007938,-0.6471471560632436
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LayerElementUV: 0 {
|
||||||
|
Version: 101
|
||||||
|
Name: ""
|
||||||
|
MappingInformationType: "ByPolygonVertex"
|
||||||
|
ReferenceInformationType: "Direct"
|
||||||
|
UV: *528 {
|
||||||
|
a: 0.640625,0.52734375,0.4375,0.546875,0.4375,0.5,0.640625,0.5,0.671875,0.953125,0.671875,1,0.46875,0.98046875,0.46875,0.953125,0.421875,0.734375,0.21875,0.734375,0.21875,0.53125,0.421875,0.53125,0.203125,0.53125,0.203125,0.734375,0,0.734375,0,0.53125,0.671875,0.890625,0.671875,0.9375,0.46875,0.9375,0.46875,0.890625,0.671875,0.453125,0.46875,0.453125,0.46875,0.4375,0.671875,0.4375,0.078125,0.375,0.0625,0.375,0.0625,0.34375,0.078125,0.34375,0.109375,0.34375,0.109375,0.375,0.09375,0.375,0.09375,0.34375,0.265625,0.5,0.28125,0.5,0.28125,0.515625,0.265625,0.515625,0.3125,0.5,0.3125,0.515625,0.296875,0.515625,0.296875,0.5,0.140625,0.34375,0.140625,0.375,0.125,0.375,0.125,0.34375,0.640625,0.875,0.625,0.875,0.625,0.84375,0.640625,0.84375,0.171875,0.375,0.15625,0.375,0.15625,0.34375,0.171875,0.34375,0.640625,0.796875,0.640625,0.828125,0.625,0.828125,0.625,0.796875,0.328125,0.5,0.34375,0.5,0.34375,0.515625,0.328125,0.515625,0.375,0.5,0.375,0.515625,0.359375,0.515625,0.359375,0.5,0.203125,0.34375,0.203125,0.375,0.1875,0.375,0.1875,0.34375,0.234375,0.375,0.21875,0.375,0.21875,0.34375,0.234375,0.34375,0.640625,0.78125,0.625,0.78125,0.625,0.75,0.640625,0.75,0.265625,0.34375,0.265625,0.375,0.25,0.375,0.25,0.34375,0.390625,0.5,0.40625,0.5,0.40625,0.515625,0.390625,0.515625,0.484375,0.359375,0.484375,0.375,0.46875,0.375,0.46875,0.359375,0.296875,0.34375,0.296875,0.375,0.28125,0.375,0.28125,0.34375,0.328125,0.375,0.3125,0.375,0.3125,0.34375,0.328125,0.34375,0.359375,0.375,0.34375,0.375,0.34375,0.34375,0.359375,0.34375,0.390625,0.34375,0.390625,0.375,0.375,0.375,0.375,0.34375,0.5,0.359375,0.515625,0.359375,0.515625,0.375,0.5,0.375,0.546875,0.359375,0.546875,0.375,0.53125,0.375,0.53125,0.359375,0.421875,0.34375,0.421875,0.375,0.40625,0.375,0.40625,0.34375,0.453125,0.375,0.4375,0.375,0.4375,0.34375,0.453125,0.34375,0.25,0.515625,0,0.515625,0,0.5,0.25,0.5,0.25,0.46875,0.25,0.484375,0,0.484375,0,0.46875,0,0.75,0.21875,0.75,0.21875,1,0,1,0.453125,0.75,0.453125,1,0.234375,1,0.234375,0.75,0.484375,0.46875,0.484375,0.484375,0.265625,0.484375,0.265625,0.46875,0.71875,0.484375,0.5,0.484375,0.5,0.46875,0.71875,0.46875,0.015625,0.375,0,0.375,0,0.296875,0.015625,0.296875,0.046875,0.296875,0.046875,0.375,0.03125,0.375,0.03125,0.296875,0,0.4375,0.21875,0.4375,0.21875,0.453125,0,0.453125,0.453125,0.4375,0.453125,0.453125,0.234375,0.453125,0.234375,0.4375,0.65625,0.65625,0.65625,0.734375,0.4375,0.734375,0.4375,0.65625,0.65625,0.640625,0.4375,0.640625,0.4375,0.5625,0.65625,0.5625,0,0.96875,0,0.96875,0,1,0,1,0,0.96875,0,0.96875,0,1,0,1,0.5765625,0.8375,0.5765625,0.875,0.5015625,0.875,0.5015625,0.8375,0.5015625,0.765625,0.5765625,0.765625,0.5765625,0.803125,0.5015625,0.803125,0.078125,1,0.078125,1,0,1,0,1,0.078125,1,0.078125,1,0,1,0,1,0.5765625,0.875,0.5765625,0.8375,0.6041734375,0.8374999999999999,0.6041734375,0.875,0.47395156250000003,0.8375,0.5015625,0.8375,0.5015625,0.875,0.47395156250000003,0.875,0.1078125,0.40474062499999997,0.1078125,0.421875,0.0328125,0.421875,0.0328125,0.40474062499999997,0.4203125,0.421875,0.3453125,0.421875,0.3453125,0.40474062499999997,0.4203125,0.40474062499999997,0.6041734375,0.803125,0.5765625,0.803125,0.5765625,0.765625,0.6041734375,0.765625,0.5015625,0.765625,0.5015625,0.803125,0.47395156250000003,0.803125,0.47395156250000003,0.765625,0.1890625,0.390625,0.2640625,0.390625,0.2640625,0.40775937500000003,0.1890625,0.40775937500000003,0.5015625,0.40775937500000003,0.5015625,0.390625,0.5765625,0.390625,0.5765625,0.40775937500000003,0,1,0,1,0,0.96875,0,0.96875,0,1,0,1,0.03125,1,0.03125,1,0.03125,1,0.03125,1,0,1,0,1,0,0.96875,0,0.96875,0,1,0,1,0.2640625,0.390625,0.29048438787957764,0.39863961954952054,0.2640625,0.407759580463386,0.18906250000000002,0.390625,0.1890625,0.407759580463386,0.16264061212042233,0.39863961954952054,0.5015625,0.390625,0.5015625,0.407759580463386,0.47514208911119205,0.3986401293578338,0.5765625,0.390625,0.602982910888808,0.3986401293578338,0.5765625,0.407759580463386,0.10781249999999999,0.421875,0.1078125,0.404740419536614,0.13423438787957767,0.41386038045047946,0.03281250000000001,0.421875,0.006390612120422329,0.41386038045047946,0.0328125,0.404740419536614,0.3453125,0.421875,0.31889208911119205,0.4138598706421662,0.3453125,0.404740419536614,0.4203125,0.421875,0.4203125,0.404740419536614,0.44673291088880795,0.4138598706421662
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LayerElementMaterial: 0 {
|
||||||
|
Version: 101
|
||||||
|
Name: ""
|
||||||
|
MappingInformationType: "AllSame"
|
||||||
|
ReferenceInformationType: "IndexToDirect"
|
||||||
|
Materials: *1 {
|
||||||
|
a: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Layer: 0 {
|
||||||
|
Version: 100
|
||||||
|
LayerElement: {
|
||||||
|
Type: "LayerElementNormal"
|
||||||
|
TypedIndex: 0
|
||||||
|
}
|
||||||
|
LayerElement: {
|
||||||
|
Type: "LayerElementMaterial"
|
||||||
|
TypedIndex: 0
|
||||||
|
}
|
||||||
|
LayerElement: {
|
||||||
|
Type: "LayerElementUV"
|
||||||
|
TypedIndex: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Material: 77933162, "Material::Bed_textures", "" {
|
||||||
|
Version: 102
|
||||||
|
ShadingModel: "lambert"
|
||||||
|
MultiLayer: 0
|
||||||
|
Properties70: {
|
||||||
|
P: "Emissive", "Vector3D", "Vector", "",0,0,0
|
||||||
|
P: "Ambient", "Vector3D", "Vector", "",0.2,0.2,0.2
|
||||||
|
P: "Diffuse", "Vector3D", "Vector", "",0.8,0.8,0.8
|
||||||
|
P: "Opacity", "double", "Number", "",1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Texture: 77056915, "Texture::Bed_textures", "" {
|
||||||
|
Type: "TextureVideoClip"
|
||||||
|
Version: 202
|
||||||
|
TextureName: "Texture::Bed_textures"
|
||||||
|
Media: "Video::Bed_textures"
|
||||||
|
FileName: ""
|
||||||
|
RelativeFilename: ""
|
||||||
|
ModelUVTranslation: 0,0
|
||||||
|
ModelUVScaling: 1,1
|
||||||
|
Texture_Alpha_Source: "None"
|
||||||
|
Cropping: 0,0,0,0
|
||||||
|
}
|
||||||
|
Video: 74972089, "Video::Bed_textures", "Clip" {
|
||||||
|
Type: "Clip"
|
||||||
|
Properties70: {
|
||||||
|
P: "Path", "KString", "XRefUrl", "", "Bed_textures"
|
||||||
|
}
|
||||||
|
UseMipMap: 0
|
||||||
|
Filename: ""
|
||||||
|
RelativeFilename: ""
|
||||||
|
Content: "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACxElEQVR4AeyZPY4UMRCFZ1oiIweJgAtwFJIVARkSdyBAe4AVAXdAIiNAm3AULkCABDkZQbOfpbeydtfTrmr/MJZH81Q9dj3bVX62u3uWzx9erx4cbj4eHpwb6u3378XFmotbUsGLpWBbpqYUtIlUwblbAirE4mqyWwIeXV8frXBFuEHqlgAtAYvdiMVV3S0BrtFWIM0EVEhqVpPW9Y9/VsNGp24KWDM+xHL3voGykuiWgJJB7Gnrv0/Am/dfjnsC3OJ2S8Ax48Pgh10C8Rbw6u27VYjLSUBtdFNAHNizJ08PQlzO9bBLgOCEn79/HQSVyQ67BOIt4Ounj0chLlcSStq7bS1IzAMa8vDgwM2F1T+3Xfkt2nwsFrLlIUa+8JC0B3BrIGyC2oBybI1B9GwzJKDnAHr3PRPQewZ6999cAezqHtRKVPMEeE4AOMMkoFYg3nabK8A70Fq8mYBamT2XdpsrwHMCwKmV0JAAPYrm2L0D0XNBjt3bVw5/0WOoxdIwr6mtgGeBkmThWH3df49zNgM6/Pb9x4rliRKb+k1da2z1534fwLoEdPDyxfPw5hYVnfpNnVU1+MOrhSIKQAkeEJSHBwduCRRRAErwgAA8PDhwS8CtADpnzXsAVxucxcIrDbcCGAhr3gO4rG0r4JXGEv8RkbpWp6l6yuXDCbAF+Z5Sj3xq24XX0Kc6UX0c5EP+qteJ8JAPZaoneH6nsFWf4lnLw50gQaagBlP1cbl8CTIF+eQsHfnWtGETpAMdLVb75+oq3ARZefJnudB/qxmnrxhBAXFBq2sdZSiFPlEEtjXuJUADy7WPLy/DXWCuv/xaB5rq714CUo6jls8ESJKyo850Kq6pgFRmzrXcOu6pAGvGRvOfChhtRq3xTAVYMzaa/1TAaDNqjWcqwJqx0fynAkabUWs8UwHWjI3mPxVw7jO6d/z/AAAA//+eL7gsAAAABklEQVQDAFQy4r0Mepw6AAAAAElFTkSuQmCC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
; Object connections
|
||||||
|
;------------------------------------------------------------------
|
||||||
|
|
||||||
|
Connections: {
|
||||||
|
|
||||||
|
;Model::mesh, Model::RootNode
|
||||||
|
C: "OO",70061392,0
|
||||||
|
|
||||||
|
;Geometry::mesh, Model::mesh
|
||||||
|
C: "OO",79347176,70061392
|
||||||
|
|
||||||
|
;Material::Bed_textures, Model::mesh
|
||||||
|
C: "OO",77933162,70061392
|
||||||
|
|
||||||
|
;Texture::Bed_textures, Material::Bed_textures
|
||||||
|
C: "OP",77056915,77933162, "DiffuseColor"
|
||||||
|
|
||||||
|
;Video::Bed_textures, Texture::Bed_textures
|
||||||
|
C: "OO",74972089,77056915
|
||||||
|
}
|
||||||
|
|
||||||
|
; Takes section
|
||||||
|
;------------------------------------------------------------------
|
||||||
|
|
||||||
|
Takes: {
|
||||||
|
Current: ""
|
||||||
|
}
|
||||||
3
assets/models/Bed.mtl
Normal file
3
assets/models/Bed.mtl
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
newmtl BedMaterial
|
||||||
|
Kd 1.0 1.0 1.0
|
||||||
|
map_Kd Bed_textures.png
|
||||||
544
assets/models/Bed.obj
Normal file
544
assets/models/Bed.obj
Normal file
|
|
@ -0,0 +1,544 @@
|
||||||
|
mtllib Bed.mtl
|
||||||
|
o Bed
|
||||||
|
v 40.625000 29.687500 40.625000
|
||||||
|
v 40.625000 21.875000 -40.625000
|
||||||
|
v 40.625000 14.062500 40.625000
|
||||||
|
v 40.625000 14.062500 -40.625000
|
||||||
|
v -40.625000 29.687500 40.625000
|
||||||
|
v -40.625000 21.875000 -40.625000
|
||||||
|
v -40.625000 14.062500 40.625000
|
||||||
|
v -40.625000 14.062500 -40.625000
|
||||||
|
v -37.500000 12.500000 -37.500000
|
||||||
|
v -37.500000 12.500000 -43.750000
|
||||||
|
v -37.500000 0.000000 -37.500000
|
||||||
|
v -37.500000 0.000000 -43.750000
|
||||||
|
v -43.750000 12.500000 -37.500000
|
||||||
|
v -43.750000 12.500000 -43.750000
|
||||||
|
v -43.750000 0.000000 -37.500000
|
||||||
|
v -43.750000 0.000000 -43.750000
|
||||||
|
v 43.750000 12.500000 -37.500000
|
||||||
|
v 43.750000 12.500000 -43.750000
|
||||||
|
v 43.750000 0.000000 -37.500000
|
||||||
|
v 43.750000 0.000000 -43.750000
|
||||||
|
v 37.500000 12.500000 -37.500000
|
||||||
|
v 37.500000 12.500000 -43.750000
|
||||||
|
v 37.500000 0.000000 -37.500000
|
||||||
|
v 37.500000 0.000000 -43.750000
|
||||||
|
v 43.750000 12.500000 56.250000
|
||||||
|
v 43.750000 12.500000 50.000000
|
||||||
|
v 43.750000 0.000000 56.250000
|
||||||
|
v 43.750000 0.000000 50.000000
|
||||||
|
v 37.500000 12.500000 56.250000
|
||||||
|
v 37.500000 12.500000 50.000000
|
||||||
|
v 37.500000 0.000000 56.250000
|
||||||
|
v 37.500000 0.000000 50.000000
|
||||||
|
v -37.500000 12.500000 56.250000
|
||||||
|
v -37.500000 12.500000 50.000000
|
||||||
|
v -37.500000 0.000000 56.250000
|
||||||
|
v -37.500000 0.000000 50.000000
|
||||||
|
v -43.750000 12.500000 56.250000
|
||||||
|
v -43.750000 12.500000 50.000000
|
||||||
|
v -43.750000 0.000000 56.250000
|
||||||
|
v -43.750000 0.000000 50.000000
|
||||||
|
v 43.750000 18.750000 56.250000
|
||||||
|
v 43.750000 18.750000 -43.750000
|
||||||
|
v 43.750000 12.500000 56.250000
|
||||||
|
v 43.750000 12.500000 -43.750000
|
||||||
|
v -43.750000 18.750000 56.250000
|
||||||
|
v -43.750000 18.750000 -43.750000
|
||||||
|
v -43.750000 12.500000 56.250000
|
||||||
|
v -43.750000 12.500000 -43.750000
|
||||||
|
v 43.750000 50.000000 56.250000
|
||||||
|
v 43.750000 50.000000 53.125000
|
||||||
|
v 43.750000 18.750000 56.250000
|
||||||
|
v 43.750000 18.750000 53.125000
|
||||||
|
v -43.750000 50.000000 56.250000
|
||||||
|
v -43.750000 50.000000 53.125000
|
||||||
|
v -43.750000 18.750000 56.250000
|
||||||
|
v -43.750000 18.750000 53.125000
|
||||||
|
v 15.000000 28.125000 46.562500
|
||||||
|
v 15.000000 28.125000 31.562500
|
||||||
|
v -15.000000 28.125000 46.562500
|
||||||
|
v -15.000000 28.125000 31.562500
|
||||||
|
v 15.000000 18.750000 46.562500
|
||||||
|
v 15.000000 18.750000 31.562500
|
||||||
|
v -15.000000 18.750000 46.562500
|
||||||
|
v -15.000000 18.750000 31.562500
|
||||||
|
v -25.000000 23.437500 46.562500
|
||||||
|
v -25.000000 23.437500 46.562500
|
||||||
|
v -25.000000 23.437500 31.562500
|
||||||
|
v -25.000000 23.437500 31.562500
|
||||||
|
v 25.000000 23.437500 46.562500
|
||||||
|
v 25.000000 23.437500 46.562500
|
||||||
|
v 25.000000 23.437500 31.562500
|
||||||
|
v 25.000000 23.437500 31.562500
|
||||||
|
v 15.000000 23.437500 26.562500
|
||||||
|
v 15.000000 23.437500 26.562500
|
||||||
|
v -15.000000 23.437500 26.562500
|
||||||
|
v -15.000000 23.437500 26.562500
|
||||||
|
v 15.000000 23.437500 51.562500
|
||||||
|
v 15.000000 23.437500 51.562500
|
||||||
|
v -15.000000 23.437500 51.562500
|
||||||
|
v -15.000000 23.437500 51.562500
|
||||||
|
vt 0.640625 0.527344
|
||||||
|
vt 0.437500 0.546875
|
||||||
|
vt 0.437500 0.500000
|
||||||
|
vt 0.640625 0.500000
|
||||||
|
vt 0.671875 0.953125
|
||||||
|
vt 0.671875 1.000000
|
||||||
|
vt 0.468750 0.980469
|
||||||
|
vt 0.468750 0.953125
|
||||||
|
vt 0.421875 0.734375
|
||||||
|
vt 0.218750 0.734375
|
||||||
|
vt 0.218750 0.531250
|
||||||
|
vt 0.421875 0.531250
|
||||||
|
vt 0.203125 0.531250
|
||||||
|
vt 0.203125 0.734375
|
||||||
|
vt 0.000000 0.734375
|
||||||
|
vt 0.000000 0.531250
|
||||||
|
vt 0.671875 0.890625
|
||||||
|
vt 0.671875 0.937500
|
||||||
|
vt 0.468750 0.937500
|
||||||
|
vt 0.468750 0.890625
|
||||||
|
vt 0.671875 0.453125
|
||||||
|
vt 0.468750 0.453125
|
||||||
|
vt 0.468750 0.437500
|
||||||
|
vt 0.671875 0.437500
|
||||||
|
vt 0.078125 0.375000
|
||||||
|
vt 0.062500 0.375000
|
||||||
|
vt 0.062500 0.343750
|
||||||
|
vt 0.078125 0.343750
|
||||||
|
vt 0.109375 0.343750
|
||||||
|
vt 0.109375 0.375000
|
||||||
|
vt 0.093750 0.375000
|
||||||
|
vt 0.093750 0.343750
|
||||||
|
vt 0.265625 0.500000
|
||||||
|
vt 0.281250 0.500000
|
||||||
|
vt 0.281250 0.515625
|
||||||
|
vt 0.265625 0.515625
|
||||||
|
vt 0.312500 0.500000
|
||||||
|
vt 0.312500 0.515625
|
||||||
|
vt 0.296875 0.515625
|
||||||
|
vt 0.296875 0.500000
|
||||||
|
vt 0.140625 0.343750
|
||||||
|
vt 0.140625 0.375000
|
||||||
|
vt 0.125000 0.375000
|
||||||
|
vt 0.125000 0.343750
|
||||||
|
vt 0.640625 0.875000
|
||||||
|
vt 0.625000 0.875000
|
||||||
|
vt 0.625000 0.843750
|
||||||
|
vt 0.640625 0.843750
|
||||||
|
vt 0.171875 0.375000
|
||||||
|
vt 0.156250 0.375000
|
||||||
|
vt 0.156250 0.343750
|
||||||
|
vt 0.171875 0.343750
|
||||||
|
vt 0.640625 0.796875
|
||||||
|
vt 0.640625 0.828125
|
||||||
|
vt 0.625000 0.828125
|
||||||
|
vt 0.625000 0.796875
|
||||||
|
vt 0.328125 0.500000
|
||||||
|
vt 0.343750 0.500000
|
||||||
|
vt 0.343750 0.515625
|
||||||
|
vt 0.328125 0.515625
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.375000 0.515625
|
||||||
|
vt 0.359375 0.515625
|
||||||
|
vt 0.359375 0.500000
|
||||||
|
vt 0.203125 0.343750
|
||||||
|
vt 0.203125 0.375000
|
||||||
|
vt 0.187500 0.375000
|
||||||
|
vt 0.187500 0.343750
|
||||||
|
vt 0.234375 0.375000
|
||||||
|
vt 0.218750 0.375000
|
||||||
|
vt 0.218750 0.343750
|
||||||
|
vt 0.234375 0.343750
|
||||||
|
vt 0.640625 0.781250
|
||||||
|
vt 0.625000 0.781250
|
||||||
|
vt 0.625000 0.750000
|
||||||
|
vt 0.640625 0.750000
|
||||||
|
vt 0.265625 0.343750
|
||||||
|
vt 0.265625 0.375000
|
||||||
|
vt 0.250000 0.375000
|
||||||
|
vt 0.250000 0.343750
|
||||||
|
vt 0.390625 0.500000
|
||||||
|
vt 0.406250 0.500000
|
||||||
|
vt 0.406250 0.515625
|
||||||
|
vt 0.390625 0.515625
|
||||||
|
vt 0.484375 0.359375
|
||||||
|
vt 0.484375 0.375000
|
||||||
|
vt 0.468750 0.375000
|
||||||
|
vt 0.468750 0.359375
|
||||||
|
vt 0.296875 0.343750
|
||||||
|
vt 0.296875 0.375000
|
||||||
|
vt 0.281250 0.375000
|
||||||
|
vt 0.281250 0.343750
|
||||||
|
vt 0.328125 0.375000
|
||||||
|
vt 0.312500 0.375000
|
||||||
|
vt 0.312500 0.343750
|
||||||
|
vt 0.328125 0.343750
|
||||||
|
vt 0.359375 0.375000
|
||||||
|
vt 0.343750 0.375000
|
||||||
|
vt 0.343750 0.343750
|
||||||
|
vt 0.359375 0.343750
|
||||||
|
vt 0.390625 0.343750
|
||||||
|
vt 0.390625 0.375000
|
||||||
|
vt 0.375000 0.375000
|
||||||
|
vt 0.375000 0.343750
|
||||||
|
vt 0.500000 0.359375
|
||||||
|
vt 0.515625 0.359375
|
||||||
|
vt 0.515625 0.375000
|
||||||
|
vt 0.500000 0.375000
|
||||||
|
vt 0.546875 0.359375
|
||||||
|
vt 0.546875 0.375000
|
||||||
|
vt 0.531250 0.375000
|
||||||
|
vt 0.531250 0.359375
|
||||||
|
vt 0.421875 0.343750
|
||||||
|
vt 0.421875 0.375000
|
||||||
|
vt 0.406250 0.375000
|
||||||
|
vt 0.406250 0.343750
|
||||||
|
vt 0.453125 0.375000
|
||||||
|
vt 0.437500 0.375000
|
||||||
|
vt 0.437500 0.343750
|
||||||
|
vt 0.453125 0.343750
|
||||||
|
vt 0.250000 0.515625
|
||||||
|
vt 0.000000 0.515625
|
||||||
|
vt 0.000000 0.500000
|
||||||
|
vt 0.250000 0.500000
|
||||||
|
vt 0.250000 0.468750
|
||||||
|
vt 0.250000 0.484375
|
||||||
|
vt 0.000000 0.484375
|
||||||
|
vt 0.000000 0.468750
|
||||||
|
vt 0.000000 0.750000
|
||||||
|
vt 0.218750 0.750000
|
||||||
|
vt 0.218750 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.453125 0.750000
|
||||||
|
vt 0.453125 1.000000
|
||||||
|
vt 0.234375 1.000000
|
||||||
|
vt 0.234375 0.750000
|
||||||
|
vt 0.484375 0.468750
|
||||||
|
vt 0.484375 0.484375
|
||||||
|
vt 0.265625 0.484375
|
||||||
|
vt 0.265625 0.468750
|
||||||
|
vt 0.718750 0.484375
|
||||||
|
vt 0.500000 0.484375
|
||||||
|
vt 0.500000 0.468750
|
||||||
|
vt 0.718750 0.468750
|
||||||
|
vt 0.015625 0.375000
|
||||||
|
vt 0.000000 0.375000
|
||||||
|
vt 0.000000 0.296875
|
||||||
|
vt 0.015625 0.296875
|
||||||
|
vt 0.046875 0.296875
|
||||||
|
vt 0.046875 0.375000
|
||||||
|
vt 0.031250 0.375000
|
||||||
|
vt 0.031250 0.296875
|
||||||
|
vt 0.000000 0.437500
|
||||||
|
vt 0.218750 0.437500
|
||||||
|
vt 0.218750 0.453125
|
||||||
|
vt 0.000000 0.453125
|
||||||
|
vt 0.453125 0.437500
|
||||||
|
vt 0.453125 0.453125
|
||||||
|
vt 0.234375 0.453125
|
||||||
|
vt 0.234375 0.437500
|
||||||
|
vt 0.656250 0.656250
|
||||||
|
vt 0.656250 0.734375
|
||||||
|
vt 0.437500 0.734375
|
||||||
|
vt 0.437500 0.656250
|
||||||
|
vt 0.656250 0.640625
|
||||||
|
vt 0.437500 0.640625
|
||||||
|
vt 0.437500 0.562500
|
||||||
|
vt 0.656250 0.562500
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.576562 0.837500
|
||||||
|
vt 0.576562 0.875000
|
||||||
|
vt 0.501563 0.875000
|
||||||
|
vt 0.501563 0.837500
|
||||||
|
vt 0.501563 0.765625
|
||||||
|
vt 0.576562 0.765625
|
||||||
|
vt 0.576562 0.803125
|
||||||
|
vt 0.501563 0.803125
|
||||||
|
vt 0.078125 1.000000
|
||||||
|
vt 0.078125 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.078125 1.000000
|
||||||
|
vt 0.078125 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.576562 0.875000
|
||||||
|
vt 0.576562 0.837500
|
||||||
|
vt 0.604173 0.837500
|
||||||
|
vt 0.604173 0.875000
|
||||||
|
vt 0.473952 0.837500
|
||||||
|
vt 0.501563 0.837500
|
||||||
|
vt 0.501563 0.875000
|
||||||
|
vt 0.473952 0.875000
|
||||||
|
vt 0.107813 0.404741
|
||||||
|
vt 0.107813 0.421875
|
||||||
|
vt 0.032813 0.421875
|
||||||
|
vt 0.032813 0.404741
|
||||||
|
vt 0.420312 0.421875
|
||||||
|
vt 0.345313 0.421875
|
||||||
|
vt 0.345313 0.404741
|
||||||
|
vt 0.420312 0.404741
|
||||||
|
vt 0.604173 0.803125
|
||||||
|
vt 0.576562 0.803125
|
||||||
|
vt 0.576562 0.765625
|
||||||
|
vt 0.604173 0.765625
|
||||||
|
vt 0.501563 0.765625
|
||||||
|
vt 0.501563 0.803125
|
||||||
|
vt 0.473952 0.803125
|
||||||
|
vt 0.473952 0.765625
|
||||||
|
vt 0.189062 0.390625
|
||||||
|
vt 0.264062 0.390625
|
||||||
|
vt 0.264062 0.407759
|
||||||
|
vt 0.189062 0.407759
|
||||||
|
vt 0.501563 0.407759
|
||||||
|
vt 0.501563 0.390625
|
||||||
|
vt 0.576562 0.390625
|
||||||
|
vt 0.576562 0.407759
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 0.968750
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.000000 1.000000
|
||||||
|
vt 0.264062 0.390625
|
||||||
|
vt 0.290484 0.398640
|
||||||
|
vt 0.264062 0.407760
|
||||||
|
vt 0.189063 0.390625
|
||||||
|
vt 0.189062 0.407760
|
||||||
|
vt 0.162641 0.398640
|
||||||
|
vt 0.501563 0.390625
|
||||||
|
vt 0.501563 0.407760
|
||||||
|
vt 0.475142 0.398640
|
||||||
|
vt 0.576562 0.390625
|
||||||
|
vt 0.602983 0.398640
|
||||||
|
vt 0.576562 0.407760
|
||||||
|
vt 0.107812 0.421875
|
||||||
|
vt 0.107813 0.404740
|
||||||
|
vt 0.134234 0.413860
|
||||||
|
vt 0.032813 0.421875
|
||||||
|
vt 0.006391 0.413860
|
||||||
|
vt 0.032813 0.404740
|
||||||
|
vt 0.345313 0.421875
|
||||||
|
vt 0.318892 0.413860
|
||||||
|
vt 0.345313 0.404740
|
||||||
|
vt 0.420312 0.421875
|
||||||
|
vt 0.420312 0.404740
|
||||||
|
vt 0.446733 0.413860
|
||||||
|
vn 1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn 0.000000 0.995409 -0.095712
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.424434 0.905459 -0.000000
|
||||||
|
vn -0.424434 0.905459 0.000000
|
||||||
|
vn 0.000000 0.729537 0.683941
|
||||||
|
vn 0.000000 0.729537 -0.683941
|
||||||
|
vn 0.424434 -0.905459 0.000000
|
||||||
|
vn -0.424434 -0.905459 0.000000
|
||||||
|
vn 0.000000 -0.729537 0.683941
|
||||||
|
vn 0.000000 -0.729537 -0.683941
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.323574 -0.690290 0.647147
|
||||||
|
vn -0.323574 -0.690290 0.647147
|
||||||
|
vn 0.323574 -0.690290 -0.647147
|
||||||
|
vn -0.323574 -0.690290 -0.647147
|
||||||
|
vn 0.323574 0.690290 0.647147
|
||||||
|
vn -0.323574 0.690290 0.647147
|
||||||
|
vn 0.323574 0.690290 -0.647147
|
||||||
|
vn -0.323574 0.690290 -0.647147
|
||||||
|
usemtl BedMaterial
|
||||||
|
s 1
|
||||||
|
f 2/1/1 1/2/1 3/3/1
|
||||||
|
f 2/1/1 3/3/1 4/4/1
|
||||||
|
f 7/5/2 5/6/2 6/7/2
|
||||||
|
f 7/5/2 6/7/2 8/8/2
|
||||||
|
f 5/9/3 1/10/3 2/11/3
|
||||||
|
f 5/9/3 2/11/3 6/12/3
|
||||||
|
f 4/13/4 3/14/4 7/15/4
|
||||||
|
f 4/13/4 7/15/4 8/16/4
|
||||||
|
f 3/17/5 1/18/5 5/19/5
|
||||||
|
f 3/17/5 5/19/5 7/20/5
|
||||||
|
f 6/21/6 2/22/6 4/23/6
|
||||||
|
f 6/21/6 4/23/6 8/24/6
|
||||||
|
f 10/25/7 9/26/7 11/27/7
|
||||||
|
f 10/25/7 11/27/7 12/28/7
|
||||||
|
f 15/29/8 13/30/8 14/31/8
|
||||||
|
f 15/29/8 14/31/8 16/32/8
|
||||||
|
f 13/33/9 9/34/9 10/35/9
|
||||||
|
f 13/33/9 10/35/9 14/36/9
|
||||||
|
f 12/37/10 11/38/10 15/39/10
|
||||||
|
f 12/37/10 15/39/10 16/40/10
|
||||||
|
f 11/41/11 9/42/11 13/43/11
|
||||||
|
f 11/41/11 13/43/11 15/44/11
|
||||||
|
f 14/45/12 10/46/12 12/47/12
|
||||||
|
f 14/45/12 12/47/12 16/48/12
|
||||||
|
f 18/49/13 17/50/13 19/51/13
|
||||||
|
f 18/49/13 19/51/13 20/52/13
|
||||||
|
f 23/53/14 21/54/14 22/55/14
|
||||||
|
f 23/53/14 22/55/14 24/56/14
|
||||||
|
f 21/57/15 17/58/15 18/59/15
|
||||||
|
f 21/57/15 18/59/15 22/60/15
|
||||||
|
f 20/61/16 19/62/16 23/63/16
|
||||||
|
f 20/61/16 23/63/16 24/64/16
|
||||||
|
f 19/65/17 17/66/17 21/67/17
|
||||||
|
f 19/65/17 21/67/17 23/68/17
|
||||||
|
f 22/69/18 18/70/18 20/71/18
|
||||||
|
f 22/69/18 20/71/18 24/72/18
|
||||||
|
f 26/73/19 25/74/19 27/75/19
|
||||||
|
f 26/73/19 27/75/19 28/76/19
|
||||||
|
f 31/77/20 29/78/20 30/79/20
|
||||||
|
f 31/77/20 30/79/20 32/80/20
|
||||||
|
f 29/81/21 25/82/21 26/83/21
|
||||||
|
f 29/81/21 26/83/21 30/84/21
|
||||||
|
f 28/85/22 27/86/22 31/87/22
|
||||||
|
f 28/85/22 31/87/22 32/88/22
|
||||||
|
f 27/89/23 25/90/23 29/91/23
|
||||||
|
f 27/89/23 29/91/23 31/92/23
|
||||||
|
f 30/93/24 26/94/24 28/95/24
|
||||||
|
f 30/93/24 28/95/24 32/96/24
|
||||||
|
f 34/97/25 33/98/25 35/99/25
|
||||||
|
f 34/97/25 35/99/25 36/100/25
|
||||||
|
f 39/101/26 37/102/26 38/103/26
|
||||||
|
f 39/101/26 38/103/26 40/104/26
|
||||||
|
f 37/105/27 33/106/27 34/107/27
|
||||||
|
f 37/105/27 34/107/27 38/108/27
|
||||||
|
f 36/109/28 35/110/28 39/111/28
|
||||||
|
f 36/109/28 39/111/28 40/112/28
|
||||||
|
f 35/113/29 33/114/29 37/115/29
|
||||||
|
f 35/113/29 37/115/29 39/116/29
|
||||||
|
f 38/117/30 34/118/30 36/119/30
|
||||||
|
f 38/117/30 36/119/30 40/120/30
|
||||||
|
f 42/121/31 41/122/31 43/123/31
|
||||||
|
f 42/121/31 43/123/31 44/124/31
|
||||||
|
f 47/125/32 45/126/32 46/127/32
|
||||||
|
f 47/125/32 46/127/32 48/128/32
|
||||||
|
f 45/129/33 41/130/33 42/131/33
|
||||||
|
f 45/129/33 42/131/33 46/132/33
|
||||||
|
f 44/133/34 43/134/34 47/135/34
|
||||||
|
f 44/133/34 47/135/34 48/136/34
|
||||||
|
f 43/137/35 41/138/35 45/139/35
|
||||||
|
f 43/137/35 45/139/35 47/140/35
|
||||||
|
f 46/141/36 42/142/36 44/143/36
|
||||||
|
f 46/141/36 44/143/36 48/144/36
|
||||||
|
f 50/145/37 49/146/37 51/147/37
|
||||||
|
f 50/145/37 51/147/37 52/148/37
|
||||||
|
f 55/149/38 53/150/38 54/151/38
|
||||||
|
f 55/149/38 54/151/38 56/152/38
|
||||||
|
f 53/153/39 49/154/39 50/155/39
|
||||||
|
f 53/153/39 50/155/39 54/156/39
|
||||||
|
f 52/157/40 51/158/40 55/159/40
|
||||||
|
f 52/157/40 55/159/40 56/160/40
|
||||||
|
f 51/161/41 49/162/41 53/163/41
|
||||||
|
f 51/161/41 53/163/41 55/164/41
|
||||||
|
f 54/165/42 50/166/42 52/167/42
|
||||||
|
f 54/165/42 52/167/42 56/168/42
|
||||||
|
f 70/169/43 69/170/43 72/171/43
|
||||||
|
f 70/169/43 72/171/43 71/172/43
|
||||||
|
f 65/173/44 66/174/44 68/175/44
|
||||||
|
f 65/173/44 68/175/44 67/176/44
|
||||||
|
f 57/177/45 58/178/45 60/179/45
|
||||||
|
f 57/177/45 60/179/45 59/180/45
|
||||||
|
f 64/181/46 62/182/46 61/183/46
|
||||||
|
f 64/181/46 61/183/46 63/184/46
|
||||||
|
f 77/185/47 78/186/47 80/187/47
|
||||||
|
f 77/185/47 80/187/47 79/188/47
|
||||||
|
f 74/189/48 73/190/48 76/191/48
|
||||||
|
f 74/189/48 76/191/48 75/192/48
|
||||||
|
f 58/193/49 57/194/49 70/195/49
|
||||||
|
f 58/193/49 70/195/49 72/196/49
|
||||||
|
f 66/197/50 59/198/50 60/199/50
|
||||||
|
f 66/197/50 60/199/50 68/200/50
|
||||||
|
f 78/201/51 57/202/51 59/203/51
|
||||||
|
f 78/201/51 59/203/51 80/204/51
|
||||||
|
f 60/205/52 58/206/52 74/207/52
|
||||||
|
f 60/205/52 74/207/52 76/208/52
|
||||||
|
f 69/209/53 61/210/53 62/211/53
|
||||||
|
f 69/209/53 62/211/53 71/212/53
|
||||||
|
f 64/213/54 63/214/54 65/215/54
|
||||||
|
f 64/213/54 65/215/54 67/216/54
|
||||||
|
f 63/217/55 61/218/55 77/219/55
|
||||||
|
f 63/217/55 77/219/55 79/220/55
|
||||||
|
f 73/221/56 62/222/56 64/223/56
|
||||||
|
f 73/221/56 64/223/56 75/224/56
|
||||||
|
f 73/225/57 74/226/57 71/227/57
|
||||||
|
f 73/225/57 71/227/57 72/228/57
|
||||||
|
f 78/229/58 77/230/58 69/231/58
|
||||||
|
f 78/229/58 69/231/58 70/232/58
|
||||||
|
f 76/233/59 75/234/59 67/235/59
|
||||||
|
f 76/233/59 67/235/59 68/236/59
|
||||||
|
f 79/237/60 80/238/60 65/239/60
|
||||||
|
f 79/237/60 65/239/60 66/240/60
|
||||||
|
f 61/241/61 69/242/61 77/243/61
|
||||||
|
f 63/244/62 79/245/62 65/246/62
|
||||||
|
f 62/247/63 73/248/63 71/249/63
|
||||||
|
f 64/250/64 67/251/64 75/252/64
|
||||||
|
f 57/253/65 78/254/65 70/255/65
|
||||||
|
f 59/256/66 66/257/66 80/258/66
|
||||||
|
f 58/259/67 72/260/67 74/261/67
|
||||||
|
f 60/262/68 76/263/68 68/264/68
|
||||||
BIN
assets/models/Bed_textures.png
Normal file
BIN
assets/models/Bed_textures.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 783 B |
119
scripts/convert_blockbench_fbx.py
Normal file
119
scripts/convert_blockbench_fbx.py
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Convert Blockbench ASCII FBX to standard OBJ with normals, UVs, and triangulation for Raylib.
|
||||||
|
Usage: python scripts/convert_blockbench_fbx.py <input.fbx> [output.obj]
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
def convert_fbx_to_obj(fbx_path, obj_path=None):
|
||||||
|
if obj_path is None:
|
||||||
|
obj_path = os.path.splitext(fbx_path)[0] + ".obj"
|
||||||
|
|
||||||
|
mtl_path = os.path.splitext(obj_path)[0] + ".mtl"
|
||||||
|
obj_name = os.path.splitext(os.path.basename(obj_path))[0]
|
||||||
|
tex_name = obj_name + "_textures.png"
|
||||||
|
|
||||||
|
with open(fbx_path, "r", encoding="utf-8", errors="ignore") as f:
|
||||||
|
text = f.read()
|
||||||
|
|
||||||
|
# Vertices
|
||||||
|
v_match = re.search(r"Vertices:\s*\*\d+\s*\{\s*a:\s*([^}]+)\}", text)
|
||||||
|
if not v_match:
|
||||||
|
print(f"Error: No vertices found in {fbx_path}")
|
||||||
|
return False
|
||||||
|
raw_v = [float(x.strip()) for x in v_match.group(1).split(",")]
|
||||||
|
min_y = min(raw_v[1::3])
|
||||||
|
# Ground the model so bottom Y is 0.0
|
||||||
|
vertices = [(raw_v[i], raw_v[i+1] - min_y, raw_v[i+2]) for i in range(0, len(raw_v), 3)]
|
||||||
|
|
||||||
|
# Indices
|
||||||
|
p_match = re.search(r"PolygonVertexIndex:\s*\*\d+\s*\{\s*a:\s*([^}]+)\}", text)
|
||||||
|
if not p_match:
|
||||||
|
print(f"Error: No indices found in {fbx_path}")
|
||||||
|
return False
|
||||||
|
raw_p = [int(x.strip()) for x in p_match.group(1).split(",")]
|
||||||
|
|
||||||
|
# UVs
|
||||||
|
uv_match = re.search(r"UV:\s*\*\d+\s*\{\s*a:\s*([^}]+)\}", text)
|
||||||
|
raw_uv = [float(x.strip()) for x in uv_match.group(1).split(",")] if uv_match else []
|
||||||
|
uvs = [(raw_uv[i], raw_uv[i+1]) for i in range(0, len(raw_uv), 2)]
|
||||||
|
|
||||||
|
# Polygons
|
||||||
|
polygons_v = []
|
||||||
|
polygons_uv = []
|
||||||
|
cur_v = []
|
||||||
|
cur_uv = []
|
||||||
|
|
||||||
|
for i, idx in enumerate(raw_p):
|
||||||
|
uv_idx = i
|
||||||
|
if idx < 0:
|
||||||
|
cur_v.append(~idx)
|
||||||
|
cur_uv.append(uv_idx)
|
||||||
|
polygons_v.append(cur_v)
|
||||||
|
polygons_uv.append(cur_uv)
|
||||||
|
cur_v = []
|
||||||
|
cur_uv = []
|
||||||
|
else:
|
||||||
|
cur_v.append(idx)
|
||||||
|
cur_uv.append(uv_idx)
|
||||||
|
|
||||||
|
# Compute face normals
|
||||||
|
def calc_normal(p0, p1, p2):
|
||||||
|
ax, ay, az = p1[0]-p0[0], p1[1]-p0[1], p1[2]-p0[2]
|
||||||
|
bx, by, bz = p2[0]-p0[0], p2[1]-p0[1], p2[2]-p0[2]
|
||||||
|
nx = ay*bz - az*by
|
||||||
|
ny = az*bx - ax*bz
|
||||||
|
nz = ax*by - ay*bx
|
||||||
|
l = (nx*nx + ny*ny + nz*nz)**0.5
|
||||||
|
if l < 1e-6:
|
||||||
|
return (0.0, 1.0, 0.0)
|
||||||
|
return (nx/l, ny/l, nz/l)
|
||||||
|
|
||||||
|
normals = []
|
||||||
|
triangles = []
|
||||||
|
|
||||||
|
for pv, puv in zip(polygons_v, polygons_uv):
|
||||||
|
p0 = vertices[pv[0]]
|
||||||
|
p1 = vertices[pv[1]]
|
||||||
|
p2 = vertices[pv[2]]
|
||||||
|
norm = calc_normal(p0, p1, p2)
|
||||||
|
normals.append(norm)
|
||||||
|
norm_idx = len(normals)
|
||||||
|
|
||||||
|
for k in range(1, len(pv) - 1):
|
||||||
|
tri = [
|
||||||
|
(pv[0], puv[0], norm_idx),
|
||||||
|
(pv[k], puv[k], norm_idx),
|
||||||
|
(pv[k+1], puv[k+1], norm_idx)
|
||||||
|
]
|
||||||
|
triangles.append(tri)
|
||||||
|
|
||||||
|
with open(obj_path, "w", encoding="utf-8") as out:
|
||||||
|
out.write(f"mtllib {os.path.basename(mtl_path)}\n")
|
||||||
|
out.write(f"o {obj_name}\n")
|
||||||
|
for v in vertices:
|
||||||
|
out.write(f"v {v[0]:.6f} {v[1]:.6f} {v[2]:.6f}\n")
|
||||||
|
for uv in uvs:
|
||||||
|
out.write(f"vt {uv[0]:.6f} {uv[1]:.6f}\n")
|
||||||
|
for n in normals:
|
||||||
|
out.write(f"vn {n[0]:.6f} {n[1]:.6f} {n[2]:.6f}\n")
|
||||||
|
out.write(f"usemtl {obj_name}Material\ns 1\n")
|
||||||
|
for tri in triangles:
|
||||||
|
face_str = " ".join(f"{vi+1}/{uvi+1}/{ni}" for vi, uvi, ni in tri)
|
||||||
|
out.write(f"f {face_str}\n")
|
||||||
|
|
||||||
|
with open(mtl_path, "w", encoding="utf-8") as out:
|
||||||
|
out.write(f"newmtl {obj_name}Material\n")
|
||||||
|
out.write("Kd 1.0 1.0 1.0\n")
|
||||||
|
out.write(f"map_Kd {tex_name}\n")
|
||||||
|
|
||||||
|
print(f"Successfully converted {fbx_path} -> {obj_path} & {mtl_path}")
|
||||||
|
return True
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("Usage: convert_blockbench_fbx.py <file.fbx> [output.obj]")
|
||||||
|
sys.exit(1)
|
||||||
|
convert_fbx_to_obj(sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else None)
|
||||||
|
|
@ -133,6 +133,10 @@ void DebugSystem::applyWarp() {
|
||||||
|
|
||||||
if (w == "HUB") {
|
if (w == "HUB") {
|
||||||
m_game->startNewRun();
|
m_game->startNewRun();
|
||||||
|
} else if (w == "HUB_BED") {
|
||||||
|
m_game->startNewRun();
|
||||||
|
m_game->m_player.setGridPosition(2, 4);
|
||||||
|
m_game->m_player.setFacing(Direction::EAST);
|
||||||
} else if (w == "EXPLORATION") {
|
} else if (w == "EXPLORATION") {
|
||||||
m_game->startNewRun();
|
m_game->startNewRun();
|
||||||
if (m_config.targetFloor > 1) {
|
if (m_config.targetFloor > 1) {
|
||||||
|
|
|
||||||
|
|
@ -1228,12 +1228,55 @@ void CyberRenderer::generateTextures() {
|
||||||
m_texAncientCeil = createAncientCeilTexture();
|
m_texAncientCeil = createAncientCeilTexture();
|
||||||
m_texAncientWood = createAncientWoodTexture();
|
m_texAncientWood = createAncientWoodTexture();
|
||||||
|
|
||||||
|
// Load custom imported 3D Bed model
|
||||||
|
std::vector<std::string> bedModelPaths = {
|
||||||
|
"assets/models/Bed.obj",
|
||||||
|
"../assets/models/Bed.obj",
|
||||||
|
"models/Bed.obj"
|
||||||
|
};
|
||||||
|
std::vector<std::string> bedTexPaths = {
|
||||||
|
"assets/models/Bed_textures.png",
|
||||||
|
"../assets/models/Bed_textures.png",
|
||||||
|
"models/Bed_textures.png"
|
||||||
|
};
|
||||||
|
|
||||||
|
m_bedModelLoaded = false;
|
||||||
|
for (const auto& mp : bedModelPaths) {
|
||||||
|
if (FileExists(mp.c_str())) {
|
||||||
|
m_bedModel = LoadModel(mp.c_str());
|
||||||
|
m_bedModelLoaded = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_bedModelLoaded) {
|
||||||
|
for (const auto& tp : bedTexPaths) {
|
||||||
|
if (FileExists(tp.c_str())) {
|
||||||
|
m_texBedModel = LoadTexture(tp.c_str());
|
||||||
|
SetTextureFilter(m_texBedModel, TEXTURE_FILTER_POINT);
|
||||||
|
if (m_bedModel.materialCount > 0) {
|
||||||
|
m_bedModel.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = m_texBedModel;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_texturesLoaded = true;
|
m_texturesLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CyberRenderer::unloadTextures() {
|
void CyberRenderer::unloadTextures() {
|
||||||
if (!m_texturesLoaded) return;
|
if (!m_texturesLoaded) return;
|
||||||
|
|
||||||
|
if (m_bedModelLoaded) {
|
||||||
|
UnloadModel(m_bedModel);
|
||||||
|
if (m_texBedModel.id != 0) {
|
||||||
|
UnloadTexture(m_texBedModel);
|
||||||
|
m_texBedModel.id = 0;
|
||||||
|
}
|
||||||
|
m_bedModelLoaded = false;
|
||||||
|
}
|
||||||
|
|
||||||
UnloadTexture(m_texDungeonWall);
|
UnloadTexture(m_texDungeonWall);
|
||||||
UnloadTexture(m_texDungeonFloor);
|
UnloadTexture(m_texDungeonFloor);
|
||||||
UnloadTexture(m_texDungeonCeil);
|
UnloadTexture(m_texDungeonCeil);
|
||||||
|
|
@ -2091,19 +2134,27 @@ void CyberRenderer::renderHub(const HubRoom& hub, const Player& player, float an
|
||||||
Color{ 0, static_cast<unsigned char>(180 + ledPulse * 75), 255, 255 });
|
Color{ 0, static_cast<unsigned char>(180 + ledPulse * 75), 255, 255 });
|
||||||
|
|
||||||
// 8. BED (South-East corner: X in [8.5f, 11.2f], Z in [8.8f, 11.2f])
|
// 8. BED (South-East corner: X in [8.5f, 11.2f], Z in [8.8f, 11.2f])
|
||||||
Vector3 bedPos = { 9.8f, 0.30f, 10.0f };
|
if (m_bedModelLoaded) {
|
||||||
Vector3 bedSize = { 2.3f, 0.45f, 2.2f };
|
// Draw user custom imported 3D Bed model
|
||||||
DrawCube({ bedPos.x, 0.08f, bedPos.z }, bedSize.x + 0.1f, 0.16f, bedSize.z + 0.1f, Color{ 38, 26, 18, 255 });
|
Vector3 customBedPos = { 9.8f, 0.0f, 10.1f };
|
||||||
drawTexturedBox(m_texBedQuilt, bedPos, bedSize, 2.0f, 2.0f);
|
float customBedScale = 0.024f;
|
||||||
|
DrawModelEx(m_bedModel, customBedPos, Vector3{ 0.0f, 1.0f, 0.0f }, 0.0f,
|
||||||
|
Vector3{ customBedScale, customBedScale, customBedScale }, WHITE);
|
||||||
|
} else {
|
||||||
|
Vector3 bedPos = { 9.8f, 0.30f, 10.0f };
|
||||||
|
Vector3 bedSize = { 2.3f, 0.45f, 2.2f };
|
||||||
|
DrawCube({ bedPos.x, 0.08f, bedPos.z }, bedSize.x + 0.1f, 0.16f, bedSize.z + 0.1f, Color{ 38, 26, 18, 255 });
|
||||||
|
drawTexturedBox(m_texBedQuilt, bedPos, bedSize, 2.0f, 2.0f);
|
||||||
|
|
||||||
// Bed Headboard against South wall
|
// Bed Headboard against South wall
|
||||||
DrawCube({ bedPos.x, 0.75f, maxCoord - 0.08f }, bedSize.x + 0.1f, 1.1f, 0.10f, Color{ 38, 26, 18, 255 });
|
DrawCube({ bedPos.x, 0.75f, maxCoord - 0.08f }, bedSize.x + 0.1f, 1.1f, 0.10f, Color{ 38, 26, 18, 255 });
|
||||||
|
|
||||||
// Two soft pillows at head of bed
|
// Two soft pillows at head of bed
|
||||||
Vector3 pillow1 = { 9.2f, 0.58f, 10.7f };
|
Vector3 pillow1 = { 9.2f, 0.58f, 10.7f };
|
||||||
Vector3 pillow2 = { 10.4f, 0.58f, 10.7f };
|
Vector3 pillow2 = { 10.4f, 0.58f, 10.7f };
|
||||||
DrawCube(pillow1, 0.9f, 0.12f, 0.50f, Color{ 160, 165, 180, 255 });
|
DrawCube(pillow1, 0.9f, 0.12f, 0.50f, Color{ 160, 165, 180, 255 });
|
||||||
DrawCube(pillow2, 0.9f, 0.12f, 0.50f, Color{ 160, 165, 180, 255 });
|
DrawCube(pillow2, 0.9f, 0.12f, 0.50f, Color{ 160, 165, 180, 255 });
|
||||||
|
}
|
||||||
|
|
||||||
// 9. CYBERSPACE GATEWAY DOOR (North wall at X = 6.0f, Z = minCoord)
|
// 9. CYBERSPACE GATEWAY DOOR (North wall at X = 6.0f, Z = minCoord)
|
||||||
Vector3 gateFramePos = { 6.0f, roomHeight * 0.5f, minCoord + 0.05f };
|
Vector3 gateFramePos = { 6.0f, roomHeight * 0.5f, minCoord + 0.05f };
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,11 @@ private:
|
||||||
Texture2D m_texWindowView{};
|
Texture2D m_texWindowView{};
|
||||||
Texture2D m_texCyberGate{};
|
Texture2D m_texCyberGate{};
|
||||||
|
|
||||||
|
// Custom 3D Models
|
||||||
|
Model m_bedModel{};
|
||||||
|
Texture2D m_texBedModel{};
|
||||||
|
bool m_bedModelLoaded = false;
|
||||||
|
|
||||||
// Ancient Palace Storeroom Procedural Textures
|
// Ancient Palace Storeroom Procedural Textures
|
||||||
Texture2D m_texAncientWall{};
|
Texture2D m_texAncientWall{};
|
||||||
Texture2D m_texAncientFloor{};
|
Texture2D m_texAncientFloor{};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue