private void UpdateCamera() { var camera = Model.SelectedCamera; var origin = new Vector3(0, (float)camera.Height, (float)-camera.Distance) - _carOffset; var look = new Vector3(0, 0, (float)_carLength) - _lookAt; var pitch = Vector3.TransformNormal(look - origin, SlimDX.Matrix.RotationAxis(Vector3.UnitX, (float)-camera.Pitch)); _renderer.SetCamera(origin, origin + pitch, 60f.ToRadians(), pitch.Z < 0 ? MathF.PI : 0); }
public async Task LamborghiniTest() { var path = Path.Combine(AcRootFinder.Find(), @"content\cars"); if (!Directory.Exists(path)) { Debug.WriteLine("REQUIRED ASSET IS MISSING, TEST CANNOT BE DONE"); return; } var cars = Directory.GetDirectories(path, "ks_lamborghini_*").Select(x => new { CarId = Path.GetFileName(x), CarDirectory = x, Kn5 = FileUtils.GetMainCarFilename(x) }).ToList(); var sw = Stopwatch.StartNew(); var i = 0; using (var e = cars.GetEnumerator()) { if (!e.MoveNext()) { return; } var first = e.Current; if (first == null) { return; } using (var renderer = new DarkKn5ObjectRenderer(new CarDescription(first.Kn5, first.CarDirectory))) { renderer.UseMsaa = false; renderer.UseFxaa = false; renderer.AutoRotate = false; renderer.SetCamera(new Vector3(3.867643f, 1.42359f, 4.70381f), new Vector3(0.0f, 0.7f, 0.5f), (float)(Math.PI / 180d * 30f)); renderer.BackgroundColor = Color.FromArgb(220, 220, 220); renderer.Initialize(); renderer.Width = CommonAcConsts.PreviewWidth; renderer.Height = CommonAcConsts.PreviewHeight; do { if (e.Current != first) { first = e.Current; if (first == null) { return; } await renderer.SetCarAsync(new CarDescription(first.Kn5, first.CarDirectory)); } Console.WriteLine(first.CarId); foreach (var skinDirectory in Directory.GetDirectories(Path.Combine(first.CarDirectory, "skins"))) { // Console.WriteLine(skinDirectory); renderer.Shot(4d, 1d, true) .HighQualityResize(new Size(CommonAcConsts.PreviewWidth, CommonAcConsts.PreviewHeight)) .Save(Path.Combine(skinDirectory, "preview_new.jpg")); renderer.SelectNextSkin(); i++; } } while (e.MoveNext()); } } Console.WriteLine($"Done: {i} skins ({sw.Elapsed.TotalMilliseconds / i:F1} ms per skin)"); }