Przeglądaj źródła

Fix for material extension when defines not defined, set default min near to 0.5, minor fix.

master
Palash Bansal 2 lat temu
rodzic
commit
49d3ea2a29
No account linked to committer's email address

+ 1
- 0
examples/tweakpane-editor/script.ts Wyświetl plik

@@ -7,6 +7,7 @@ import {
FullScreenPlugin,
GLTFAnimationPlugin,
HalfFloatType,
HemisphereLight,
KTX2LoadPlugin,
KTXLoadPlugin,
NormalBufferPlugin,

+ 2
- 2
src/core/camera/PerspectiveCamera2.ts Wyświetl plik

@@ -87,14 +87,14 @@ export class PerspectiveCamera2 extends PerspectiveCamera implements ICamera {
* Automatically manage near and far clipping planes based on scene size.
*/
@bindToValue({obj: 'userData', onChange: 'setDirty'})
autoNearFar = true
autoNearFar = true // bound to userData so that it's saved in the glb.

/**
* Minimum near clipping plane allowed. (Distance from camera)
* @default 0.2
*/
@bindToValue({obj: 'userData', onChange: 'setDirty'})
minNearPlane = 0.2
minNearPlane = 0.5
/**
* Maximum far clipping plane allowed. (Distance from camera)
*/

+ 1
- 0
src/core/material/UnlitMaterial.ts Wyświetl plik

@@ -48,6 +48,7 @@ export class UnlitMaterial extends MeshBasicMaterial<IMaterialEvent, UnlitMateri

constructor({customMaterialExtensions, ...parameters}: MeshBasicMaterialParameters & IMaterialParameters = {}) {
super(parameters)
!this.defines && (this.defines = {})
this.fog = false
this.setDirty = this.setDirty.bind(this)
if (customMaterialExtensions) this.registerMaterialExtensions(customMaterialExtensions)

+ 5
- 5
src/core/object/RootScene.ts Wyświetl plik

@@ -371,7 +371,7 @@ export class RootScene extends Scene<ISceneEvent, ISceneEventTypes> implements I

private _v1 = new Vector3()
private _v2 = new Vector3()
/**
* Refreshes the scene active camera near far values, based on the scene bounding box.
* This is called automatically every time the camera is updated.
@@ -380,7 +380,7 @@ export class RootScene extends Scene<ISceneEvent, ISceneEventTypes> implements I
const camera = this.mainCamera as ICamera
if (!camera) return
if (camera.userData.autoNearFar === false) {
camera.near = camera.userData.minNearPlane ?? 0.2
camera.near = camera.userData.minNearPlane ?? 0.5
camera.far = camera.userData.maxFarPlane ?? 1000
return
}
@@ -393,7 +393,7 @@ export class RootScene extends Scene<ISceneEvent, ISceneEventTypes> implements I

// new way
const dist1 = Math.max(0.1, -this._v1.normalize().dot(camera.getWorldDirection(new Vector3())))
const near = Math.max(camera.userData.minNearPlane ?? 0.2, dist1 * (dist - radius))
const near = Math.max(camera.userData.minNearPlane ?? 0.5, dist1 * (dist - radius))
const far = Math.min(Math.max(near + radius, dist1 * (dist + radius)), camera.userData.maxFarPlane ?? 1000)

// old way, has issues when panning very far from the camera target
@@ -557,14 +557,14 @@ export class RootScene extends Scene<ISceneEvent, ISceneEventTypes> implements I

/**
* Minimum Camera near plane
* @deprecated - use camera.userData.minNearPlane instead
* @deprecated - use camera.minNearPlane instead
*/
get minNearDistance(): number {
console.error('minNearDistance is deprecated. Use camera.userData.minNearPlane instead')
return this.mainCamera.userData.minNearPlane ?? 0.02
}
/**
* @deprecated - use camera.userData.minNearPlane instead
* @deprecated - use camera.minNearPlane instead
*/
set minNearDistance(value: number) {
console.error('minNearDistance is deprecated. Use camera.userData.minNearPlane instead')

+ 2
- 3
src/materials/MaterialExtender.ts Wyświetl plik

@@ -97,9 +97,8 @@ export class MaterialExtender {
}

function updateMaterialDefines(defines: MaterialExtension['extraDefines'], material: IMaterial) {
if (!defines) return
if (!material.defines) {
console.warn('Material does not have defines', material) // todo: check when material.defines is undefined
if (!defines || !material) return
if (material.defines === undefined || material.defines === null) { // required for some three.js materials
material.defines = {}
}
let flag = false

Ładowanie…
Anuluj
Zapisz