private void LoadAndAdjustKn5() { _materialsProvider = new DepthMaterialProvider(); _texturesProvider = new TexturesProvider(); DeviceContextHolder.Set(_materialsProvider); DeviceContextHolder.Set(_texturesProvider); _materialsProvider.SetKn5(_kn5); _carNode = (Kn5RenderableList)Kn5Converter.Convert(_kn5.RootNode, DeviceContextHolder); _scene.Add(_carNode); _carNode.UpdateBoundingBox(); _carNode.LocalMatrix = Matrix.Translation(0, UpDelta - (_carNode.BoundingBox?.Minimum.Y ?? 0f), 0) * _carNode.LocalMatrix; _scene.UpdateBoundingBox(); }
protected override void InitializeInner() { base.InitializeInner(); _materialsProvider = new MaterialsProviderDeferred(); _texturesProvider = new TexturesProvider(); DeviceContextHolder.Set(_materialsProvider); DeviceContextHolder.Set(_texturesProvider); Scene.Add(SkyObject.Create(500f)); IRenderableObject mainNode = null; foreach (var kn5 in _kn5) { if (mainNode == null) { _carHelper.SetKn5(DeviceContextHolder); } else { _materialsProvider.SetKn5(kn5); _texturesProvider.SetKn5(kn5.OriginalFilename, kn5); } var node = Kn5Converter.Convert(kn5.RootNode, DeviceContextHolder); Scene.Add(node); if (mainNode != null) continue; node.IsReflectable = false; mainNode = node; } var asList = mainNode as Kn5RenderableList; if (asList != null) { Scene.AddRange(_carHelper.LoadAmbientShadows(asList, 0.001f)); _carHelper.AdjustPosition(asList); _carHelper.LoadMirrors(asList, DeviceContextHolder); LoadLights(asList); } Scene.UpdateBoundingBox(); Camera = new CameraOrbit(32) { Alpha = 0.9f, Beta = 0.1f, NearZ = 0.2f, FarZ = 500f, Radius = mainNode?.BoundingBox?.GetSize().Length() * 1.2f ?? 4.8f, Target = (mainNode?.BoundingBox?.GetCenter() ?? Vector3.Zero) - new Vector3(0f, 0.05f, 0f) }; _resetCamera = (CameraOrbit)Camera.Clone(); Sun = new DirectionalLight { Color = FixLight(new Vector3(1.2f, 1.0f, 0.9f)) * 5f, Direction = Vector3.Normalize(new Vector3(-1.2f, -3.4f, -2.2f)) }; _effect = DeviceContextHolder.GetEffect<EffectDeferredGObject>(); }
protected override void InitializeInner() { base.InitializeInner(); MaterialsProvider = new MaterialsProviderSimple(); TexturesProvider = new TexturesProvider(); DeviceContextHolder.Set(MaterialsProvider); DeviceContextHolder.Set(TexturesProvider); CarHelper.SetKn5(DeviceContextHolder); CarHelper.SkinTextureUpdated += (sender, args) => IsDirty = true; var node = Kn5Converter.Convert(Kn5.RootNode, DeviceContextHolder); Scene.Add(node); CarNode = node as Kn5RenderableList; if (CarNode != null) { Scene.InsertRange(0, CarHelper.LoadAmbientShadows(CarNode, 0f)); CarHelper.AdjustPosition(CarNode); CarHelper.LoadMirrors(CarNode, DeviceContextHolder); _carLights = CarHelper.LoadLights(CarNode).ToList(); } Scene.UpdateBoundingBox(); TrianglesCount = node.TrianglesCount; ObjectsCount = node.ObjectsCount; Camera = CreateCamera(node); _resetCamera = (CameraOrbit)Camera.Clone(); if (_selectSkin != null) { SelectSkin(_selectSkin); _selectSkin = null; } }