├── .gitignore ├── CesiumVRTutorial.uproject ├── Config ├── DefaultEditor.ini ├── DefaultEngine.ini ├── DefaultGame.ini ├── DefaultInput.ini └── HoloLens │ └── HoloLensEngine.ini ├── Content ├── CesiumSettings │ └── CesiumIonServers │ │ └── CesiumIonSaaS.uasset └── CesiumVRTutorial │ ├── BuildForQuest │ └── BuildForQuest.umap │ ├── DynamicUI │ ├── Blueprints │ │ ├── BP_DynamicWidget.uasset │ │ ├── BP_MetadataPopover.uasset │ │ ├── BP_MetadataTraceComponent.uasset │ │ ├── BP_VRPawn_Metadata.uasset │ │ └── WBP_Metadata.uasset │ └── DynamicUI.umap │ ├── Main │ ├── Blueprints │ │ └── BP_VRPawn_Main.uasset │ └── Main.umap │ ├── Movement │ ├── Blueprints │ │ ├── BP_VRMovementComponent.uasset │ │ └── BP_VRPawn_Movement.uasset │ └── Movement.umap │ ├── SavedLocations │ ├── Blueprints │ │ ├── BP_SavedLocationComponent.uasset │ │ ├── BP_SavedLocationMenu.uasset │ │ ├── BP_TutorialSaveGame.uasset │ │ ├── BP_VRPawn_SavedLocations.uasset │ │ ├── FSavedLocation.uasset │ │ ├── T_DeleteIcon.uasset │ │ ├── WBP_SavedLocationItem.uasset │ │ └── WBP_SavedLocationMenu.uasset │ └── SavedLocations.umap │ ├── Teleportation │ ├── Blueprints │ │ ├── BP_LineTraceRenderer.uasset │ │ ├── BP_VRPawn_Teleportation.uasset │ │ └── BP_VRTeleportComponent.uasset │ └── Teleportation.umap │ ├── ViewingTheGlobe │ ├── Blueprints │ │ ├── BP_EarthViewerComponent.uasset │ │ └── BP_VRPawn_ViewingTheGlobe.uasset │ └── ViewingTheGlobe.umap │ └── Vignette │ ├── Blueprints │ ├── BP_VRPawn_Vignette.uasset │ └── BP_VignetteComponent.uasset │ ├── Materials │ └── M_Vignette.uasset │ └── Vignette.umap ├── ContributionGuide.md ├── ISSUE_TEMPLATE └── 010_Tutorial-Release.md ├── Images ├── Cesium-VR-Headset.jpg ├── Cesium-for-Unreal-Logo-WhiteBGH.jpg ├── blueprint-comment-colors.png ├── blueprint-example.png ├── blueprintue-example.png └── blueprintue-howto.png ├── LICENSE ├── README.md ├── ReleaseGuide.md ├── Resources └── DeleteIcon.png ├── Test2 ├── Content │ ├── CesiumSettings │ │ └── CesiumIonServers │ │ │ └── CesiumIonSaaS.uasset │ └── Untitled.umap └── Saved │ ├── AutoScreenshot.png │ ├── Config │ ├── CrashReportClient │ │ └── UECC-Windows-D80EE06245D254A8EC331B8682FC8FA8 │ │ │ └── CrashReportClient.ini │ └── WorldState │ │ └── 1078873522.json │ ├── Logs │ └── Test2_2.log │ └── SourceControl │ └── UncontrolledChangelists.json ├── ThirdParty.json ├── controls.md └── pull_request_template.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio 2015 user specific files 2 | .vs/ 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | 22 | # Compiled Static libraries 23 | *.lai 24 | *.la 25 | *.a 26 | *.lib 27 | 28 | # Executables 29 | *.exe 30 | *.out 31 | *.app 32 | *.ipa 33 | 34 | # These project files can be generated by the engine 35 | *.xcodeproj 36 | *.xcworkspace 37 | *.sln 38 | *.suo 39 | *.opensdf 40 | *.sdf 41 | *.VC.db 42 | *.VC.opendb 43 | 44 | # Precompiled Assets 45 | SourceArt/**/*.png 46 | SourceArt/**/*.tga 47 | 48 | # Binary Files 49 | Binaries/* 50 | Plugins/*/Binaries/* 51 | 52 | # Builds 53 | Build/* 54 | 55 | # Whitelist PakBlacklist-.txt files 56 | !Build/*/ 57 | Build/*/** 58 | !Build/*/PakBlacklist*.txt 59 | 60 | # Don't ignore icon files in Build 61 | !Build/**/*.ico 62 | 63 | # Built data for maps 64 | *_BuiltData.uasset 65 | 66 | # Configuration files generated by the Editor 67 | Saved/* 68 | 69 | # Compiled source files for the engine to use 70 | Intermediate/* 71 | Plugins/*/Intermediate/* 72 | 73 | # Cache files for the editor to use 74 | DerivedDataCache/* 75 | -------------------------------------------------------------------------------- /CesiumVRTutorial.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "5.4", 4 | "Category": "", 5 | "Description": "", 6 | "Plugins": [ 7 | { 8 | "Name": "ModelingToolsEditorMode", 9 | "Enabled": true, 10 | "TargetAllowList": [ 11 | "Editor" 12 | ] 13 | }, 14 | { 15 | "Name": "OpenXR", 16 | "Enabled": true, 17 | "SupportedTargetPlatforms": [ 18 | "Win64", 19 | "Linux", 20 | "Android", 21 | "HoloLens" 22 | ] 23 | }, 24 | { 25 | "Name": "BlueprintAssist", 26 | "Enabled": true, 27 | "Optional": true, 28 | "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/9e895371fa3a471c87337860d6f341ff" 29 | }, 30 | { 31 | "Name": "CesiumForUnreal", 32 | "Enabled": true, 33 | "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/87b0d05800a545d49bf858ef3458c4f7", 34 | "SupportedTargetPlatforms": [ 35 | "Win64", 36 | "Mac", 37 | "Linux", 38 | "Android", 39 | "IOS" 40 | ] 41 | }, 42 | { 43 | "Name": "AndroidFileServer", 44 | "Enabled": false 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /Config/DefaultEditor.ini: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GameMapsSettings] 4 | EditorStartupMap=/Game/CesiumVRTutorial/Main/Main.Main 5 | LocalMapOptions= 6 | TransitionMap=None 7 | bUseSplitscreen=False 8 | TwoPlayerSplitscreenLayout=Horizontal 9 | ThreePlayerSplitscreenLayout=FavorTop 10 | FourPlayerSplitscreenLayout=Grid 11 | bOffsetPlayerGamepadIds=False 12 | GameInstanceClass=/Script/Engine.GameInstance 13 | GameDefaultMap=/Game/CesiumVRTutorial/ViewingTheGlobe/ViewingTheGlobe.ViewingTheGlobe 14 | ServerDefaultMap=/Engine/Maps/Entry.Entry 15 | GlobalDefaultGameMode=/Script/Engine.GameModeBase 16 | GlobalDefaultServerGameMode=None 17 | 18 | [/Script/HardwareTargeting.HardwareTargetingSettings] 19 | TargetedHardwareClass=Mobile 20 | AppliedTargetedHardwareClass=Mobile 21 | DefaultGraphicsPerformance=Scalable 22 | AppliedDefaultGraphicsPerformance=Scalable 23 | 24 | [/Script/WindowsTargetPlatform.WindowsTargetSettings] 25 | DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 26 | -D3D12TargetedShaderFormats=PCD3D_SM5 27 | +D3D12TargetedShaderFormats=PCD3D_SM5 28 | +D3D12TargetedShaderFormats=PCD3D_SM6 29 | -D3D11TargetedShaderFormats=PCD3D_SM5 30 | +D3D11TargetedShaderFormats=PCD3D_SM5 31 | Compiler=Default 32 | AudioSampleRate=48000 33 | AudioCallbackBufferFrameSize=1024 34 | AudioNumBuffersToEnqueue=1 35 | AudioMaxChannels=0 36 | AudioNumSourceWorkers=4 37 | SpatializationPlugin= 38 | SourceDataOverridePlugin= 39 | ReverbPlugin= 40 | OcclusionPlugin= 41 | CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) 42 | CacheSizeKB=65536 43 | MaxChunkSizeOverrideKB=0 44 | bResampleForDevice=False 45 | MaxSampleRate=48000.000000 46 | HighSampleRate=32000.000000 47 | MedSampleRate=24000.000000 48 | LowSampleRate=12000.000000 49 | MinSampleRate=8000.000000 50 | CompressionQualityModifier=1.000000 51 | AutoStreamingThreshold=0.000000 52 | SoundCueCookQualityIndex=-1 53 | 54 | [/Script/Engine.RendererSettings] 55 | r.Mobile.DisableVertexFog=False 56 | r.Shadow.CSM.MaxMobileCascades=2 57 | r.Mobile.AntiAliasing=3 58 | r.Mobile.FloatPrecisionMode=0 59 | r.Mobile.AllowDitheredLODTransition=False 60 | r.Mobile.VirtualTextures=False 61 | r.Mobile.ReflectionCaptureCompression=False 62 | r.DiscardUnusedQuality=False 63 | r.Shaders.CompressionFormat=2 64 | r.AllowOcclusionQueries=True 65 | r.MinScreenRadiusForLights=0.030000 66 | r.MinScreenRadiusForDepthPrepass=0.030000 67 | r.MinScreenRadiusForCSMDepth=0.010000 68 | r.PrecomputedVisibilityWarning=False 69 | r.TextureStreaming=True 70 | Compat.UseDXT5NormalMaps=False 71 | r.VirtualTextures=False 72 | r.VT.EnableAutoImport=True 73 | r.VirtualTexturedLightmaps=False 74 | r.VT.AnisotropicFiltering=False 75 | r.VT.TileSize=128 76 | r.VT.TileBorderSize=4 77 | r.vt.FeedbackFactor=16 78 | WorkingColorSpaceChoice=sRGB 79 | RedChromaticityCoordinate=(X=0.640000,Y=0.330000) 80 | GreenChromaticityCoordinate=(X=0.300000,Y=0.600000) 81 | BlueChromaticityCoordinate=(X=0.150000,Y=0.060000) 82 | WhiteChromaticityCoordinate=(X=0.312700,Y=0.329000) 83 | r.ClearCoatNormal=False 84 | r.DynamicGlobalIlluminationMethod=1 85 | r.ReflectionMethod=1 86 | r.ReflectionCaptureResolution=128 87 | r.ReflectionEnvironmentLightmapMixBasedOnRoughness=True 88 | r.Lumen.HardwareRayTracing=False 89 | r.Lumen.HardwareRayTracing.LightingMode=0 90 | r.Lumen.TraceMeshSDFs=1 91 | r.Shadow.Virtual.Enable=1 92 | r.RayTracing=False 93 | r.RayTracing.Shadows=False 94 | r.RayTracing.Skylight=False 95 | r.RayTracing.UseTextureLod=False 96 | r.PathTracing=True 97 | r.GenerateMeshDistanceFields=True 98 | r.DistanceFields.DefaultVoxelDensity=0.200000 99 | r.AllowStaticLighting=True 100 | r.NormalMapsForStaticLighting=False 101 | r.ForwardShading=True 102 | r.VertexFoggingForOpaque=True 103 | r.SeparateTranslucency=False 104 | r.TranslucentSortPolicy=0 105 | TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000) 106 | vr.VRS.HMDFixedFoveationLevel=0 107 | vr.VRS.HMDFixedFoveationDynamic=False 108 | r.CustomDepth=1 109 | r.CustomDepthTemporalAAJitter=True 110 | r.PostProcessing.PropagateAlpha=0 111 | r.DefaultFeature.Bloom=False 112 | r.DefaultFeature.AmbientOcclusion=False 113 | r.DefaultFeature.AmbientOcclusionStaticFraction=True 114 | r.DefaultFeature.AutoExposure=False 115 | r.DefaultFeature.AutoExposure.Method=0 116 | r.DefaultFeature.AutoExposure.Bias=1.000000 117 | r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=False 118 | r.DefaultFeature.MotionBlur=False 119 | r.DefaultFeature.LensFlare=False 120 | r.TemporalAA.Upsampling=True 121 | r.AntiAliasingMethod=3 122 | r.MSAACount=4 123 | r.DefaultFeature.LightUnits=1 124 | r.DefaultBackBufferPixelFormat=4 125 | r.Shadow.UnbuiltPreviewInGame=True 126 | r.StencilForLODDither=False 127 | r.EarlyZPass=3 128 | r.EarlyZPassOnlyMaterialMasking=False 129 | r.Shadow.CSMCaching=False 130 | r.DBuffer=True 131 | r.ClearSceneMethod=1 132 | r.VelocityOutputPass=0 133 | r.Velocity.EnableVertexDeformation=2 134 | r.SelectiveBasePassOutputs=False 135 | bDefaultParticleCutouts=False 136 | fx.GPUSimulationTextureSizeX=1024 137 | fx.GPUSimulationTextureSizeY=1024 138 | r.AllowGlobalClipPlane=False 139 | r.GBufferFormat=1 140 | r.MorphTarget.Mode=True 141 | r.GPUCrashDebugging=False 142 | vr.InstancedStereo=False 143 | r.MobileHDR=False 144 | vr.MobileMultiView=True 145 | r.Mobile.UseHWsRGBEncoding=True 146 | vr.RoundRobinOcclusion=False 147 | vr.ODSCapture=False 148 | r.MeshStreaming=False 149 | r.WireframeCullThreshold=5.000000 150 | r.SupportStationarySkylight=True 151 | r.SupportLowQualityLightmaps=True 152 | r.SupportPointLightWholeSceneShadows=True 153 | r.SupportSkyAtmosphere=True 154 | r.SupportSkyAtmosphereAffectsHeightFog=True 155 | r.SupportCloudShadowOnForwardLitTranslucent=False 156 | r.Material.RoughDiffuse=False 157 | r.Material.EnergyConservation=False 158 | r.SkinCache.CompileShaders=False 159 | r.SkinCache.DefaultBehavior=1 160 | r.SkinCache.SceneMemoryLimitInMB=128.000000 161 | r.Mobile.EnableStaticAndCSMShadowReceivers=True 162 | r.Mobile.EnableMovableLightCSMShaderCulling=True 163 | r.Mobile.EnableNoPrecomputedLightingCSMShader=False 164 | r.Mobile.AllowDistanceFieldShadows=True 165 | r.Mobile.AllowMovableDirectionalLights=True 166 | r.MobileNumDynamicPointLights=4 167 | r.Mobile.EnableMovableSpotlights=False 168 | r.Mobile.EnableMovableSpotlightsShadow=False 169 | r.GPUSkin.Support16BitBoneIndex=False 170 | r.GPUSkin.Limit2BoneInfluences=False 171 | r.SupportDepthOnlyIndexBuffers=True 172 | r.SupportReversedIndexBuffers=True 173 | r.Mobile.AmbientOcclusion=False 174 | r.GPUSkin.UnlimitedBoneInfluences=False 175 | r.GPUSkin.UnlimitedBoneInfluencesThreshold=8 176 | MaxSkinBones=(Default=65536,PerPlatform=(("Mobile", 256))) 177 | r.Mobile.PlanarReflectionMode=0 178 | r.Mobile.SupportsGen4TAA=True 179 | bStreamSkeletalMeshLODs=(Default=False,PerPlatform=()) 180 | bDiscardSkeletalMeshOptionalLODs=(Default=False,PerPlatform=()) 181 | VisualizeCalibrationColorMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationColor.PPM_DefaultCalibrationColor 182 | VisualizeCalibrationCustomMaterialPath=None 183 | VisualizeCalibrationGrayscaleMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationGrayscale.PPM_DefaultCalibrationGrayscale 184 | 185 | [/Script/WorldPartitionEditor.WorldPartitionEditorSettings] 186 | CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' 187 | 188 | [/Script/Engine.Engine] 189 | +ActiveGameNameRedirects=(OldGameName="TP_BlankBP",NewGameName="/Script/CesiumVRTutorial") 190 | +ActiveGameNameRedirects=(OldGameName="/Script/TP_BlankBP",NewGameName="/Script/CesiumVRTutorial") 191 | 192 | [/Script/Slate.SlateSettings] 193 | bExplicitCanvasChildZOrder=True 194 | 195 | [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] 196 | bEnablePlugin=True 197 | bAllowNetworkConnection=True 198 | SecurityToken= 199 | bIncludeInShipping=False 200 | bAllowExternalStartInShipping=False 201 | bCompileAFSProject=False 202 | bUseCompression=False 203 | bLogFiles=False 204 | bReportStats=False 205 | ConnectionType=USBOnly 206 | bUseManualIPAddress=False 207 | ManualIPAddress= 208 | 209 | [/Script/Engine.CollisionProfile] 210 | -Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False) 211 | -Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) 212 | -Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) 213 | -Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) 214 | -Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) 215 | -Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False) 216 | -Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False) 217 | -Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False) 218 | -Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False) 219 | -Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False) 220 | -Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False) 221 | -Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False) 222 | -Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False) 223 | -Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False) 224 | -Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False) 225 | -Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False) 226 | -Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False) 227 | -Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) 228 | +Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision") 229 | +Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ") 230 | +Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") 231 | +Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ") 232 | +Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ") 233 | +Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.") 234 | +Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ") 235 | +Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ") 236 | +Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.") 237 | +Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.") 238 | +Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors") 239 | +Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors") 240 | +Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.") 241 | +Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.") 242 | +Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.") 243 | +Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.") 244 | +Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.") 245 | +Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") 246 | +Profiles=(Name="WaterBodyCollision",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="",CustomResponses=((Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="Default Water Collision Profile (Created by Water Plugin)") 247 | +DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="CesiumWorldTerrain") 248 | +DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="WidgetInteraction") 249 | +EditProfiles=(Name="UI",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="EngineTraceChannel2",Response=ECR_Ignore),(Channel="EngineTraceChannel3",Response=ECR_Ignore),(Channel="EngineTraceChannel4",Response=ECR_Ignore),(Channel="EngineTraceChannel5",Response=ECR_Ignore),(Channel="EngineTraceChannel6",Response=ECR_Ignore),(Channel="WidgetInteraction"),(Channel="GameTraceChannel3",Response=ECR_Ignore),(Channel="GameTraceChannel4",Response=ECR_Ignore),(Channel="GameTraceChannel5",Response=ECR_Ignore),(Channel="GameTraceChannel6",Response=ECR_Ignore),(Channel="GameTraceChannel7",Response=ECR_Ignore),(Channel="GameTraceChannel8",Response=ECR_Ignore),(Channel="GameTraceChannel9",Response=ECR_Ignore),(Channel="GameTraceChannel10",Response=ECR_Ignore),(Channel="GameTraceChannel11",Response=ECR_Ignore),(Channel="GameTraceChannel12",Response=ECR_Ignore),(Channel="GameTraceChannel13",Response=ECR_Ignore),(Channel="GameTraceChannel14",Response=ECR_Ignore),(Channel="GameTraceChannel15",Response=ECR_Ignore),(Channel="GameTraceChannel16",Response=ECR_Ignore),(Channel="GameTraceChannel17",Response=ECR_Ignore),(Channel="GameTraceChannel18",Response=ECR_Ignore))) 250 | -ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") 251 | -ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") 252 | -ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") 253 | -ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") 254 | -ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") 255 | +ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") 256 | +ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") 257 | +ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") 258 | +ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") 259 | +ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") 260 | -CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") 261 | -CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") 262 | -CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") 263 | -CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") 264 | +CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") 265 | +CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") 266 | +CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") 267 | +CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") 268 | 269 | [/Script/CesiumRuntime.CesiumRuntimeSettings] 270 | ScaleLevelOfDetailByDPI=True 271 | EnableExperimentalOcclusionCullingFeature=True 272 | RequestsPerCachePrune=10000 273 | MaxCacheItems=4096 274 | 275 | [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] 276 | PackageName=com.Cesium.[PROJECT] 277 | StoreVersion=1 278 | StoreVersionOffsetArm64=0 279 | StoreVersionOffsetX8664=0 280 | ApplicationDisplayName= 281 | VersionDisplayName=1.0 282 | MinSDKVersion=29 283 | TargetSDKVersion=29 284 | InstallLocation=InternalOnly 285 | bEnableLint=False 286 | bPackageDataInsideApk=False 287 | bCreateAllPlatformsInstall=False 288 | bDisableVerifyOBBOnStartUp=False 289 | bForceSmallOBBFiles=False 290 | bAllowLargeOBBFiles=False 291 | bAllowPatchOBBFile=False 292 | bAllowOverflowOBBFiles=False 293 | bUseExternalFilesDir=False 294 | bPublicLogFiles=True 295 | Orientation=SensorLandscape 296 | MaxAspectRatio=2.100000 297 | bUseDisplayCutout=False 298 | bAllowResizing=False 299 | bSupportSizeChanges=False 300 | bRestoreNotificationsOnReboot=False 301 | bFullScreen=True 302 | bEnableNewKeyboard=True 303 | DepthBufferPreference=Default 304 | bValidateTextureFormats=True 305 | bForceCompressNativeLibs=False 306 | bEnableAdvancedBinaryCompression=False 307 | bEnableBundle=False 308 | bEnableUniversalAPK=True 309 | bBundleABISplit=True 310 | bBundleLanguageSplit=True 311 | bBundleDensitySplit=True 312 | ExtraApplicationSettings= 313 | ExtraActivitySettings= 314 | bAndroidVoiceEnabled=False 315 | bEnableMulticastSupport=False 316 | bPackageForMetaQuest=True 317 | bRemoveOSIG=False 318 | KeyStore= 319 | KeyAlias= 320 | KeyStorePassword= 321 | KeyPassword= 322 | bBuildForArm64=True 323 | bBuildForX8664=False 324 | bBuildForES31=False 325 | bSupportsVulkan=True 326 | bSupportsVulkanSM5=False 327 | DebugVulkanLayerDirectory=(Path="") 328 | bAndroidOpenGLSupportsBackbufferSampling=False 329 | bDetectVulkanByDefault=True 330 | bBuildWithHiddenSymbolVisibility=False 331 | bDisableStackProtector=False 332 | bDisableLibCppSharedDependencyValidation=False 333 | bSaveSymbols=False 334 | bStripShaderReflection=True 335 | bEnableGooglePlaySupport=False 336 | bUseGetAccounts=False 337 | GamesAppID= 338 | bEnableSnapshots=False 339 | bSupportAdMob=True 340 | AdMobAppID= 341 | TagForChildDirectedTreatment=TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED 342 | TagForUnderAgeOfConsent=TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED 343 | MaxAdContentRating=MAX_AD_CONTENT_RATING_G 344 | AdMobAdUnitID= 345 | GooglePlayLicenseKey= 346 | GCMClientSenderID= 347 | bShowLaunchImage=True 348 | bAllowIMU=False 349 | bAllowControllers=True 350 | bBlockAndroidKeysOnControllers=False 351 | bControllersBlockDeviceFeedback=False 352 | AndroidAudio=Default 353 | AudioSampleRate=44100 354 | AudioCallbackBufferFrameSize=1024 355 | AudioNumBuffersToEnqueue=4 356 | AudioMaxChannels=0 357 | AudioNumSourceWorkers=0 358 | SpatializationPlugin= 359 | SourceDataOverridePlugin= 360 | ReverbPlugin= 361 | OcclusionPlugin= 362 | CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) 363 | CacheSizeKB=65536 364 | MaxChunkSizeOverrideKB=0 365 | bResampleForDevice=False 366 | SoundCueCookQualityIndex=-1 367 | MaxSampleRate=48000.000000 368 | HighSampleRate=32000.000000 369 | MedSampleRate=24000.000000 370 | LowSampleRate=12000.000000 371 | MinSampleRate=8000.000000 372 | CompressionQualityModifier=1.000000 373 | AutoStreamingThreshold=0.000000 374 | AndroidGraphicsDebugger=None 375 | MaliGraphicsDebuggerPath=(Path="") 376 | bEnableMaliPerfCounters=False 377 | bMultiTargetFormat_ETC2=True 378 | bMultiTargetFormat_DXT=True 379 | bMultiTargetFormat_ASTC=True 380 | TextureFormatPriority_ETC2=0.200000 381 | TextureFormatPriority_DXT=0.600000 382 | TextureFormatPriority_ASTC=0.900000 383 | SDKAPILevelOverride= 384 | NDKAPILevelOverride= 385 | BuildToolsOverride= 386 | bStreamLandscapeMeshLODs=False 387 | bEnableDomStorage=False 388 | 389 | [/Script/OculusHMD.OculusHMDRuntimeSettings] 390 | XrApi=NativeOpenXR 391 | ColorSpace=Quest 392 | 393 | -------------------------------------------------------------------------------- /Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GeneralProjectSettings] 4 | ProjectID=1EE21E5545795C95434418BCBE3DEF2C 5 | bStartInVR=True 6 | 7 | -------------------------------------------------------------------------------- /Config/DefaultInput.ini: -------------------------------------------------------------------------------- 1 | [/Script/Engine.InputSettings] 2 | -AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 3 | -AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 4 | -AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 5 | -AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 6 | -AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 7 | -AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 8 | -AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 9 | +AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 10 | +AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 11 | +AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 12 | +AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 13 | +AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 14 | +AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 15 | +AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 16 | +AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 17 | +AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 18 | +AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 19 | +AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 20 | +AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 21 | +AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 22 | +AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 23 | +AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 24 | +AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 25 | +AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 26 | +AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 27 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 28 | +AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 29 | +AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 30 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 31 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 32 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 33 | +AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 34 | +AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 35 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 36 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 37 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 38 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 39 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 40 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 41 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 42 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 43 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 44 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 45 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 46 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 47 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 48 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 49 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 50 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 51 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 52 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 53 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Touch",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 54 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 55 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 56 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 57 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 58 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 59 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 60 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 61 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 62 | bAltEnterTogglesFullscreen=True 63 | bF11TogglesFullscreen=True 64 | bUseMouseForTouch=False 65 | bEnableMouseSmoothing=True 66 | bEnableFOVScaling=True 67 | bCaptureMouseOnLaunch=True 68 | bEnableLegacyInputScales=True 69 | bEnableMotionControls=True 70 | bFilterInputByPlatformUser=False 71 | bEnableInputDeviceSubsystem=True 72 | bShouldFlushPressedKeysOnViewportFocusLost=True 73 | bEnableDynamicComponentInputBinding=True 74 | bAlwaysShowTouchInterface=False 75 | bShowConsoleOnFourFingerTap=True 76 | bEnableGestureRecognizer=False 77 | bUseAutocorrect=False 78 | DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown 79 | DefaultViewportMouseLockMode=LockOnCapture 80 | FOVScale=0.011110 81 | DoubleClickTime=0.200000 82 | +ActionMappings=(ActionName="Left Teleport",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Left_X_Click) 83 | +ActionMappings=(ActionName="Right Teleport",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Right_A_Click) 84 | +ActionMappings=(ActionName="Left Teleport",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Left_A_Click) 85 | +ActionMappings=(ActionName="Right Teleport",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_A_Click) 86 | +ActionMappings=(ActionName="Left Teleport",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Left_Trackpad_Touch) 87 | +ActionMappings=(ActionName="Right Teleport",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Right_Trackpad_Touch) 88 | +ActionMappings=(ActionName="Open Menu",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Left_Menu_Click) 89 | +ActionMappings=(ActionName="Open Menu",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Left_System_Click) 90 | +ActionMappings=(ActionName="Open Menu",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Left_Menu_Click) 91 | +ActionMappings=(ActionName="LeftSelectUI",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Left_Trigger_Click) 92 | +ActionMappings=(ActionName="RightSelectUI",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Right_Trigger_Click) 93 | +ActionMappings=(ActionName="LeftSelectUI",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Left_Trigger_Click) 94 | +ActionMappings=(ActionName="LeftSelectUI",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Left_Trigger_Click) 95 | +ActionMappings=(ActionName="RightSelectUI",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_Trigger_Click) 96 | +ActionMappings=(ActionName="RightSelectUI",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Right_Trigger_Click) 97 | +AxisMappings=(AxisName="Left Pointer",Scale=1.000000,Key=OculusTouch_Left_Trigger_Axis) 98 | +AxisMappings=(AxisName="Right Pointer",Scale=1.000000,Key=OculusTouch_Right_Trigger_Axis) 99 | +AxisMappings=(AxisName="Left Pointer",Scale=1.000000,Key=ValveIndex_Left_Trigger_Axis) 100 | +AxisMappings=(AxisName="Right Pointer",Scale=1.000000,Key=ValveIndex_Right_Trigger_Axis) 101 | +AxisMappings=(AxisName="Left Pointer",Scale=1.000000,Key=Vive_Left_Trigger_Axis) 102 | +AxisMappings=(AxisName="Right Pointer",Scale=1.000000,Key=Vive_Right_Trigger_Click) 103 | +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=OculusTouch_Left_Thumbstick_Y) 104 | +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=OculusTouch_Right_Thumbstick_Y) 105 | +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=ValveIndex_Left_Thumbstick_Y) 106 | +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=ValveIndex_Right_Thumbstick_Y) 107 | +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=Vive_Left_Trackpad_Y) 108 | +AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=Vive_Right_Trackpad_Y) 109 | +AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=OculusTouch_Left_Thumbstick_Click) 110 | +AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=OculusTouch_Right_Thumbstick_Click) 111 | +AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=ValveIndex_Left_Thumbstick_Click) 112 | +AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=ValveIndex_Right_Thumbstick_Click) 113 | +AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=Vive_Left_Trackpad_Click) 114 | +AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=Vive_Right_Trackpad_Click) 115 | +AxisMappings=(AxisName="ModifyMovement",Scale=1.000000,Key=OculusTouch_Left_Grip_Click) 116 | +AxisMappings=(AxisName="ModifyMovement",Scale=1.000000,Key=OculusTouch_Right_Grip_Click) 117 | +AxisMappings=(AxisName="ModifyMovement",Scale=1.000000,Key=ValveIndex_Left_Grip_Axis) 118 | +AxisMappings=(AxisName="ModifyMovement",Scale=1.000000,Key=ValveIndex_Right_Grip_Axis) 119 | +AxisMappings=(AxisName="ModifyMovement",Scale=1.000000,Key=Vive_Left_Grip_Click) 120 | +AxisMappings=(AxisName="ModifyMovement",Scale=1.000000,Key=Vive_Right_Grip_Click) 121 | +AxisMappings=(AxisName="MoveLeft",Scale=1.000000,Key=OculusTouch_Left_Thumbstick_X) 122 | +AxisMappings=(AxisName="MoveLeft",Scale=1.000000,Key=OculusTouch_Right_Thumbstick_X) 123 | +AxisMappings=(AxisName="MoveLeft",Scale=1.000000,Key=ValveIndex_Left_Thumbstick_X) 124 | +AxisMappings=(AxisName="MoveLeft",Scale=1.000000,Key=ValveIndex_Right_Thumbstick_X) 125 | +AxisMappings=(AxisName="MoveLeft",Scale=1.000000,Key=Vive_Left_Trackpad_X) 126 | +AxisMappings=(AxisName="MoveLeft",Scale=1.000000,Key=Vive_Right_Trackpad_X) 127 | +AxisMappings=(AxisName="RotateOnY",Scale=1.000000,Key=OculusTouch_Right_B_Click) 128 | +AxisMappings=(AxisName="RotateOnY",Scale=-1.000000,Key=OculusTouch_Left_Y_Click) 129 | +AxisMappings=(AxisName="LeftDrag",Scale=1.000000,Key=OculusTouch_Left_Grip_Axis) 130 | +AxisMappings=(AxisName="LeftDrag",Scale=1.000000,Key=ValveIndex_Left_Grip_Axis) 131 | +AxisMappings=(AxisName="LeftDrag",Scale=1.000000,Key=Vive_Left_Grip_Click) 132 | +AxisMappings=(AxisName="RightDrag",Scale=1.000000,Key=OculusTouch_Right_Grip_Axis) 133 | +AxisMappings=(AxisName="RightDrag",Scale=1.000000,Key=ValveIndex_Right_Grip_Axis) 134 | +AxisMappings=(AxisName="RightDrag",Scale=1.000000,Key=Vive_Right_Grip_Click) 135 | DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput 136 | DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent 137 | DefaultTouchInterface=None 138 | -ConsoleKeys=Tilde 139 | +ConsoleKeys=Tilde 140 | 141 | -------------------------------------------------------------------------------- /Config/HoloLens/HoloLensEngine.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/HoloLensPlatformEditor.HoloLensTargetSettings] 4 | bBuildForEmulation=False 5 | bBuildForDevice=True 6 | bUseNameForLogo=True 7 | bBuildForRetailWindowsStore=False 8 | bAutoIncrementVersion=False 9 | bShouldCreateAppInstaller=False 10 | AppInstallerInstallationURL= 11 | HoursBetweenUpdateChecks=0 12 | bEnablePIXProfiling=False 13 | TileBackgroundColor=(B=64,G=0,R=0,A=255) 14 | SplashScreenBackgroundColor=(B=64,G=0,R=0,A=255) 15 | +PerCultureResources=(CultureId="",Strings=(PackageDisplayName="",PublisherDisplayName="",PackageDescription="",ApplicationDisplayName="",ApplicationDescription=""),Images=()) 16 | TargetDeviceFamily=Windows.Holographic 17 | MinimumPlatformVersion= 18 | MaximumPlatformVersionTested=10.0.18362.0 19 | MaxTrianglesPerCubicMeter=500.000000 20 | SpatialMeshingVolumeSize=20.000000 21 | CompilerVersion=Default 22 | Windows10SDKVersion=10.0.18362.0 23 | +CapabilityList=internetClientServer 24 | +CapabilityList=privateNetworkClientServer 25 | +Uap2CapabilityList=spatialPerception 26 | bSetDefaultCapabilities=False 27 | SpatializationPlugin= 28 | ReverbPlugin= 29 | OcclusionPlugin= 30 | SoundCueCookQualityIndex=-1 31 | 32 | -------------------------------------------------------------------------------- /Content/CesiumSettings/CesiumIonServers/CesiumIonSaaS.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumSettings/CesiumIonServers/CesiumIonSaaS.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/BuildForQuest/BuildForQuest.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/BuildForQuest/BuildForQuest.umap -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_DynamicWidget.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_DynamicWidget.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_MetadataPopover.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_MetadataPopover.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_MetadataTraceComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_MetadataTraceComponent.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_VRPawn_Metadata.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/DynamicUI/Blueprints/BP_VRPawn_Metadata.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/DynamicUI/Blueprints/WBP_Metadata.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/DynamicUI/Blueprints/WBP_Metadata.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/DynamicUI/DynamicUI.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/DynamicUI/DynamicUI.umap -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Main/Blueprints/BP_VRPawn_Main.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Main/Blueprints/BP_VRPawn_Main.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Main/Main.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Main/Main.umap -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Movement/Blueprints/BP_VRMovementComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Movement/Blueprints/BP_VRMovementComponent.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Movement/Blueprints/BP_VRPawn_Movement.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Movement/Blueprints/BP_VRPawn_Movement.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Movement/Movement.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Movement/Movement.umap -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_SavedLocationComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_SavedLocationComponent.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_SavedLocationMenu.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_SavedLocationMenu.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_TutorialSaveGame.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_TutorialSaveGame.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_VRPawn_SavedLocations.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/BP_VRPawn_SavedLocations.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/FSavedLocation.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/FSavedLocation.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/T_DeleteIcon.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/T_DeleteIcon.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/WBP_SavedLocationItem.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/WBP_SavedLocationItem.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/Blueprints/WBP_SavedLocationMenu.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/Blueprints/WBP_SavedLocationMenu.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/SavedLocations/SavedLocations.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/SavedLocations/SavedLocations.umap -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Teleportation/Blueprints/BP_LineTraceRenderer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Teleportation/Blueprints/BP_LineTraceRenderer.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Teleportation/Blueprints/BP_VRPawn_Teleportation.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Teleportation/Blueprints/BP_VRPawn_Teleportation.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Teleportation/Blueprints/BP_VRTeleportComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Teleportation/Blueprints/BP_VRTeleportComponent.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Teleportation/Teleportation.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Teleportation/Teleportation.umap -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/ViewingTheGlobe/Blueprints/BP_EarthViewerComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/ViewingTheGlobe/Blueprints/BP_EarthViewerComponent.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/ViewingTheGlobe/Blueprints/BP_VRPawn_ViewingTheGlobe.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/ViewingTheGlobe/Blueprints/BP_VRPawn_ViewingTheGlobe.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/ViewingTheGlobe/ViewingTheGlobe.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/ViewingTheGlobe/ViewingTheGlobe.umap -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Vignette/Blueprints/BP_VRPawn_Vignette.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Vignette/Blueprints/BP_VRPawn_Vignette.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Vignette/Blueprints/BP_VignetteComponent.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Vignette/Blueprints/BP_VignetteComponent.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Vignette/Materials/M_Vignette.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Vignette/Materials/M_Vignette.uasset -------------------------------------------------------------------------------- /Content/CesiumVRTutorial/Vignette/Vignette.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Content/CesiumVRTutorial/Vignette/Vignette.umap -------------------------------------------------------------------------------- /ContributionGuide.md: -------------------------------------------------------------------------------- 1 | 2 | ## 1. Technical Implementation for the tutorial ✔️ 3 | 4 | The first step is to create the technical implementation for the tutorial. Create a new branch in the [VR tutorial repository](https://github.com/CesiumGS/cesium-unreal-vr-tutorial) with your code additions. When your changes are complete, open a new pull request for the feature and please fill out all of the required fields. 5 | 6 | Be sure to comment the blueprints you create. Follow these comment best practices: 7 | - Use the comment descriptions to give the readers a specific technical explanation for the highlighted portion of logic. You can also use comments to point out any potentially interesting or obscure settings or approaches. 8 | - Use comment colors as specified below. These colors add variation on the tutorial learning page and to allow readers to quickly differentiate between where logical flow moves to and from. 9 | 10 | Comment colors (all in Hex sRGB). Use font size 14.
11 | `#27D541FF` Comments on the pawn
12 | `#D5B227FF` Comments on an actor component
13 | `#2779D5FF` Comments on a non pawn actor
14 | 15 | ![blueprint comment colors](Images/blueprint-comment-colors.png) 16 | 17 | These colors have been tested on blueprintue.com. While they appear vibrant in the unreal editor, they appear more neutral on the website (pictured below). 18 | 19 | Blueprint in Unreal | Blueprint on blueprintue.com 20 | :-------------------------:|:-------------------------: 21 | ![blueprint example](Images/blueprint-example.png) | ![blueprintue-example](Images/blueprintue-example.png) 22 | 23 | 24 | ## 2. Adding blueprints to blueprintue.com 📘 25 | 26 | To create a new blueprintue: 27 | 1. Log into blueprintue.com. 28 | 1. The landing page of the site brings you to create a new blueprint. You can click on the logo to return to this page. 29 | 1. Set the name as something descriptive with the object name first, followed by the name of the function or event graph. 30 | 1. Set the exposure of the blueprint to “Unlisted”. This will prevent the blueprint from showing up on the main blueprintue site. The link will still be viewable to readers once it is embedded on the tutorial page. 31 | 1. Click the “Create your blueprint” button on the bottom. 32 | 33 | ![blueprint example](Images/blueprintue-howto.png) 34 | 35 | - You can view all owned blueprints by clicking on “Profile” in the upper right corner. 36 | - A blueprint can be edited by clicking on it and selecting the “Edit blueprint” button next to its title. To make adjustments add in a new version, and you have the option to remove previous versions in light of mistakes or typos. 37 | 38 | 39 | ## 3. Drafting up tutorial text in Google Docs 40 | 41 | 1. Create a new folder in the ["Learning Content"](https://drive.google.com/drive/folders/1HjB710sAdvjJT4GxldsMP20LL6mZtres?usp=sharing) folder to house the draft text and images associated with the tutorial.
Convention for VR Tutorials is "CVR #X FeatureName". 42 | 1. Create a new Google doc in this folder from the VR Tutorial text template. Add any associated images to the folder. 43 | 1. Once the draft is complete, open a new issue in this repository to track the release and review of this tutorial. Use the VR Tutorial issue template. 44 | 45 | [VR Tutorial text template](https://docs.google.com/document/d/18wJF1SXb1XiV7wKQqYGPxjXW9JNhEjhprQHJJ03wOK0/edit?usp=sharing)
46 | [Teleportation Draft (example)](https://docs.google.com/document/d/1xzQJ0zzISj7TVAEeOcnZgyj0rJWwACdCtpbE9m_5Ibk/edit) 47 | 48 | ### Tips: 49 | 1. Use info boxes when possible to draw attention to the reader if they might see something they are not familiar with. 50 | 1. When mentioning a feature in Unreal that is not fully covered in this tutorial, add in a link to any official Unreal documentation that would be helpful to readers seeking more information. 51 | 1. Add in links to blueprintue with the caption format already laid out like so:

FeatureFolder > Blueprints > BP_FeatureComponent > DoSomething function
This makes it easier to review and add into Prismic later. 52 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE/010_Tutorial-Release.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tutorial Release 3 | about: The tutorial release issue will aid in keeping track of all of the needed processes to publishing and releasing a tutorial. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 13 | 14 | ## Cesium for Unreal VR Tutorial Release 15 | 16 | Link to issue [#xx]()
17 | Target release date: x/x/xxxx
18 | 19 | ### Checklist 20 | 21 | - [ ] Complete technical implementation [#xx]() 22 | - [ ] Create a new version and upload to Unreal Engine Marketplace 23 | - [ ] Add issue to [communications repository](https://github.com/CesiumGS/communications/issues) for visibility and announcement coordination. 24 | - [ ] Complete text review, [Google Doc]() 25 | - [ ] Publish page, [Prismic Page]() 26 | 27 | #### References 28 | 29 | [🏗️ Contribution Guide](ContributionGuide.md)
30 | [📗 Release Guide](ReleaseGuide.md)
31 | 32 | [VR Tutorial on UE marketplace](https://www.unrealengine.com/marketplace/en-US/product/cesium-for-unreal-vr-tutorials/reviews)
33 | [VR series introduction on Cesium site](https://cesium.com/learn/unreal/vr-introduction/)
34 | -------------------------------------------------------------------------------- /Images/Cesium-VR-Headset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Images/Cesium-VR-Headset.jpg -------------------------------------------------------------------------------- /Images/Cesium-for-Unreal-Logo-WhiteBGH.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Images/Cesium-for-Unreal-Logo-WhiteBGH.jpg -------------------------------------------------------------------------------- /Images/blueprint-comment-colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Images/blueprint-comment-colors.png -------------------------------------------------------------------------------- /Images/blueprint-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Images/blueprint-example.png -------------------------------------------------------------------------------- /Images/blueprintue-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Images/blueprintue-example.png -------------------------------------------------------------------------------- /Images/blueprintue-howto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Images/blueprintue-howto.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Cesium for Unreal Logo](Images/Cesium-for-Unreal-Logo-WhiteBGH.jpg)](https://cesium.com/unreal-marketplace?utm_source=cesium-unreal&utm_medium=github&utm_campaign=unreal) 2 | 3 | # Cesium VR Tutorial Series 4 | 5 | The [Cesium for Unreal VR Tutorial Series](https://www.unrealengine.com/marketplace/en-US/product/fc21a5013d8d4821b8c7dc88e94ca0ed) covers strategies and solutions for several common challenges that come with building global-scale applications in VR using [Cesium for Unreal](https://www.unrealengine.com/marketplace/en-US/product/87b0d05800a545d49bf858ef3458c4f7). 6 | 7 | This repository holds example levels and code for all the features described in the tutorial series. This series serves as a guide for recommend practices for VR application design and user ergonomics you can use in your projects. Each tutorial will describe the UX challenge, our design thinking, and the Blueprint code for each feature. New tutorials will be added in frequently so check back soon! 8 | 9 |

10 | Cesium VR Headset 11 |

12 | 13 | ### :rocket: Get started with the tutorial 14 | 15 | You will need to download the [Cesium for Unreal plugin from the Unreal Engine Marketplace](https://cesium.com/unreal-marketplace?utm_source=cesium-unreal&utm_medium=github&utm_campaign=unreal). 16 | 17 | If you are new to the Cesium For Unreal plugin, check out the [Quickstart](https://cesium.com/learn/unreal/unreal-quickstart/) tutorial. 18 | 19 | ## :video_game: VR Device Compatibility 20 | 21 | We tested the inputs used in this project on Meta Quest 2, and are confident the inputs will work with Meta Quest and Rift devices using the Touch controllers. We have added reasonable corresponding inputs for other VR headsets such as the HTC Vive and Valve Index, but have not tested them. If you use any of these headsets, we'd love to get your feedback and build it into the tutorials. 22 | 23 | If you are using a VR headset not mentioned above, please add the corresponding bindings for your controller for each input action / axis. For more information on setting up inputs, see the [Unreal Engine docs](https://www.unrealengine.com/en-US/blog/input-action-and-axis-mappings-in-ue4). For an example of setting up inputs across different VR devices, see the [VR Template](https://docs.unrealengine.com/4.27/en-US/Resources/Templates/VRTemplate/) project. 24 | 25 | ## :world_map: Tutorial Descriptions 26 | 27 | The features in this Unreal Engine Project are separated into individual levels with each level corresponding to a single tutorial. Each level builds upon the previous levels. If you would like to see a singular feature in action, open the level within the tutorial's corresponding folder to try it out. Open the level within the "Main" folder if you would like to see all of the features combined into one experience. 28 | 29 | ### :one: Tutorial 1 - Teleportation, Line Traces, and Height Correction 30 | 31 | In the first tutorial we cover teleporting the player long distances across the world and fetching higher levels of detail on 3D Tiles from a distance. This tutorial also covers common issues in VR like moving below the surface and provides strategies to render line traces from the players hands. 32 | 33 | The teleportation level is located at [Content/CesiumVRTutorial/Teleportation/Teleportation.umap](Content/CesiumVRTutorial/Teleportation/Teleportation.umap) 34 | 35 | ### :two: Tutorial 2 - Movement 36 | 37 | In the second tutorial we explore motion across the world while minimizing nausea and how to keep the ground below the player loaded at all times. We also cover ways to change your movement speed based on the pawn's altitude, which aids in traversing great distances quickly and easily. 38 | 39 | The movement level is located at [Content/CesiumVRTutorial/Movement/Movement.umap](Content/CesiumVRTutorial/Movement/Movement.umap) 40 | 41 | ### :three: Tutorial 3 - Vignette 42 | 43 | In the third tutorial we explore applying a vignette over the user's view in order to reduce motion sickness. This vignette is callable from external components to activate from specific actions such as teleportation and snap rotation. The vignette component also automatically calculates an optimal vignette based on the user's movement velocity, ensuring that if the user's pawn is moving at all a vignette will be activated. 44 | 45 | The vignette level is located at [Content/CesiumVRTutorial/Vignette/Vignette.umap](Content/CesiumVRTutorial/Vignette/Vignette.umap) 46 | 47 | ### :four: Tutorial 4 - Build for Quest 48 | 49 | In the Meta Quest build tutorial we cover some topics on optimization as well as Android packaging and sdk setup. 50 | 51 | The Build For Quest level is located at [Content/CesiumVRTutorial/BuildForQuest/BuildForQuest.umap](Content/CesiumVRTutorial/BuildForQuest/BuildForQuest.umap) 52 | 53 | ### :five: Tutorial 5 - Dragging the Globe 54 | 55 | In the dragging the globe tutorial, the player can scale up to a size larger than the Earth to grab it and rotate it at any angle. While in the "Earth View" mode facilitated by an Earth Viewer component, the player can freely look towards the earth and rotate it with the thumbsticks as they please. This functionality is integrated into the main level by entering Earth View mode automatically when the player flyes above a certain altitude. The player can then leave "Earth View" and return to "Normal View" by teleporting onto the Earth's surface. 56 | 57 | The dragging the globe level is located at [Content/CesiumVRTutorial/DraggingTheGlobe/DraggingTheGlobe.umap](Content/CesiumVRTutorial/DraggingTheGlobe/DraggingTheGlobe.umap) 58 | 59 | ### :six: Tutorial 6 - Metadata and Dynamic UI 60 | 61 | The player can query tilesets for metadata and have the results show up in a UI that scales according to player distance and rotates to face the player, ensuring legibility from any distance. 62 | 63 | The metadata and dynamic UI level is located at [Content/CesiumVRTutorial/DynamicUI/DynamicUI.umap](Content/CesiumVRTutorial/DynamicUI/DynamicUI.umap) 64 | 65 | ## :building_construction: Contribute to the repository 66 | 67 | Please consult the [ContributionGuide.md](ContributionGuide.md) 68 | 69 | ## :mailbox_with_mail: Tell Us What You Think 70 | 71 | Have you noticed a bug or fatal error? Open an issue [here](https://github.com/CesiumGS/cesium-unreal-vr-tutorial/issues). 72 | 73 | Have any suggestions or questions? Ask them on the [community forum](https://community.cesium.com), we would love to hear from you. 74 | 75 | ## :green_book:License 76 | 77 | [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). Cesium for Unreal VR Tutorials are free to use as a starter project for both commercial and non-commercial use. 78 | -------------------------------------------------------------------------------- /ReleaseGuide.md: -------------------------------------------------------------------------------- 1 | 2 | ## 1. Create and tag a release 🏷️ 3 | 4 | - Once the tutorial PR has been merged, create a new tag and release for the tutorial. Tags should be named with a 'v' before the number with minor versions increasing with each tutorial release. For example: 5 | 6 | ``` 7 | git tag -a v1.11 -m "Cesium for Unreal VR Tutorial v1.11" 8 | git push origin --tags 9 | ``` 10 | 11 | - After a tag has been created, create a new release with that tag. 12 | - Set the title to "Cesium for Unreal VR Tutorial vX.X Latest". 13 | - Remove "Latest" from the title of any previous releases. 14 | - Add into the body any changes in this release, typically "Tutorials added in this release:" 15 | ``` 16 | Tutorials added in this release: 17 | 18 | - "Tutorial Name" 19 | ``` 20 | 21 | 22 | ## 2. Edit file in the unreal marketplace 🎪 23 | 24 | - Log into unrealengine.com with the unreal@cesium.com account. 25 | - Navigate on the top bar: `Marketplace > Submit Content`, then select the "Cesium for Unreal VR Tutorials" product. 26 | - Scroll down to the "Product Files" portion and select "Submit File Update" 27 | - Edit the existing file submission: 28 | * Version title - To match the new release version number 29 | * Project File Link - To match the zip of the release 30 | * Version Notes - To match the new release 31 | 32 | - Submit your changes and the new file will be reviewed by Epic 33 | -------------------------------------------------------------------------------- /Resources/DeleteIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Resources/DeleteIcon.png -------------------------------------------------------------------------------- /Test2/Content/CesiumSettings/CesiumIonServers/CesiumIonSaaS.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Test2/Content/CesiumSettings/CesiumIonServers/CesiumIonSaaS.uasset -------------------------------------------------------------------------------- /Test2/Content/Untitled.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Test2/Content/Untitled.umap -------------------------------------------------------------------------------- /Test2/Saved/AutoScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CesiumGS/cesium-unreal-vr-tutorial/38955fc368bb22830b4e74c5d03c7faa515b6e49/Test2/Saved/AutoScreenshot.png -------------------------------------------------------------------------------- /Test2/Saved/Config/CrashReportClient/UECC-Windows-D80EE06245D254A8EC331B8682FC8FA8/CrashReportClient.ini: -------------------------------------------------------------------------------- 1 | [CrashReportClient] 2 | bHideLogFilesOption=false 3 | bIsAllowedToCloseWithoutSending=true 4 | CrashConfigPurgeDays=2 5 | 6 | -------------------------------------------------------------------------------- /Test2/Saved/Config/WorldState/1078873522.json: -------------------------------------------------------------------------------- 1 | { 2 | "Folders": 3 | { 4 | "Lighting": 5 | { 6 | "bIsExpanded": true 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /Test2/Saved/SourceControl/UncontrolledChangelists.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "changelists": [ 4 | { 5 | "guid": "00000000000000000000000000000000", 6 | "description": "Default Uncontrolled Changelist", 7 | "files": [ 8 | "C:/Repos/vr-tutorial-fresh/Test2/Content/Untitled.umap", 9 | "C:/Repos/vr-tutorial-fresh/Test2/Content/CesiumSettings/CesiumIonServers/CesiumIonSaaS.uasset" 10 | ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /ThirdParty.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "cesium-unreal", 4 | "version": "Latest", 5 | "url": "https://github.com/CesiumGS/cesium-unreal", 6 | "license": ["Apache-2.0"] 7 | } 8 | ] 9 | -------------------------------------------------------------------------------- /controls.md: -------------------------------------------------------------------------------- 1 | ### Teleportation 2 | 3 | - Activate Pointer: Press and hold the index finger trigger on the controller. 4 | - Teleport: While the pointer is activated and pointing at a surface, press the X or A button to teleport to that location. 5 | 6 | ### Free Movement 7 | 8 | - Press the thumbstick forward to move in the viewing direction. 9 | - Press the thumbstick left or right to strafe side to side. 10 | - Click the thumbstick inwards to ascend, or additionally hold down the grip button to descend. 11 | - Hold the grip down and move the thumbstick left or right to snap rotate. 12 | -------------------------------------------------------------------------------- /pull_request_template.md: -------------------------------------------------------------------------------- 1 | 5 | 6 | ### Summary 7 | 8 | 13 | 14 | ### Author checklist 15 | 16 | - Tutorial for _replace_with_issue_numbers_ 17 | - Has the new tutorial been integrated into the main level? Yes/No 18 | - Has a new section of the readme been added for this tutorial? Yes/No 19 | - Have you done a full self-review of the code and blueprints? Yes/No 20 | - Have you tagged a primary reviewer? Yes/No 21 | - Are there any remaining tasks to do or blocking questions to answer before we can merge this? Yes/No 22 | 27 | 28 | ### Testing plan 29 | 30 | 38 | 39 | 42 | 43 | ### Reminders for reviewers 44 | 45 | Thank you for taking the time to review this PR. By approving a PR you are taking as much responsibility for these changes as the author. Please keep these points in mind throughout the review process: 46 | 47 | - Review and run all parts of the test plan on this branch and verify it matches expectations. 48 | - Review the code and make sure you do not have any remaining questions or concerns. You should understand why this code change fixes the issue and agree that it's the best approach to doing so. 49 | - Review the automated tests and make sure there are no missing tests or edge cases. 50 | - When you feel this is ready bump it to a second reviewer or merge. 51 | --------------------------------------------------------------------------------