| 636 | previewKeyLight.position.set(200, 240, 160); |
| 637 | previewKeyLight.castShadow = true; |
| 638 | previewKeyLight.shadow.mapSize.set(2048, 2048); |
| 639 | previewKeyLight.shadow.bias = -0.0002; |
| 640 | previewKeyLight.shadow.normalBias = 0.02; |
| 641 | previewScene.add(previewKeyLight); |
| 642 | previewScene.add(previewKeyLight.target); |
| 643 | |
| 644 | previewFillLight = new THREE.DirectionalLight(0xc8d8ff, 0.45); |
| 645 | previewFillLight.position.set(-220, 120, -160); |
| 646 | previewScene.add(previewFillLight); |
| 647 | |
| 648 | previewBackLight = new THREE.DirectionalLight(0xffffff, 0.35); |
| 649 | previewBackLight.position.set(40, 80, -260); |
| 650 | previewScene.add(previewBackLight); |
| 651 | |
| 652 | previewTurntable = new THREE.Group(); |
| 653 | previewTurntable.name = 'preview-turntable'; |
| 654 | previewScene.add(previewTurntable); |
| 655 | |
| 656 | createPreviewEnvironment(); |
| 657 | createStudioRig(); |
| 658 | |
| 659 | previewWireframe = false; |
| 660 | previewWireframe = false; |
| 661 | |
| 662 | // Add axes helper (initially hidden) |
| 663 | previewAxesHelper = new THREE.AxesHelper(100); |
| 664 | previewAxesHelper.visible = false; |
| 665 | previewScene.add(previewAxesHelper); |
| 666 | |
| 667 | applyStudioSettings(); |
| 668 | |
| 669 | // Create OrbitControls |
| 670 | if (typeof THREE.OrbitControls !== 'undefined') { |