export default OrientedImageMaterial;
/**
* OrientedImageMaterial is a custom shader material used to do projective texture mapping.
*
* This Material is designed to project many textures simultaneously.
* Each projected texture setting is stored as an {@link OrientedImageCamera}.
*
* All cameras settings, like distorsion, can be specified in a configuration file.
* See [CameraCalibrationParser]{@link module:CameraCalibrationParser.parse}
* used to parse a configuration file and create an array of camera.
*
* The current implementation supports the following distortion models :
* - no distortion (polynom==vec3(0),l1l2==vec2(0))
* - radial distortion (polynom!=vec3(0),l1l2==vec2(0)) (see 15.2.2 Radial Model in [MicMac doc](https://github.com/micmacIGN/Documentation/blob/master/DocMicMac.pdf))
* - equilinear fish eye distortion (polynom!=vec3(0),l1l2 != vec2(0)) (see 15.3.4 Fish eye models in [MicMac doc](https://github.com/micmacIGN/Documentation/blob/master/DocMicMac.pdf))
* (Note: radial decentric parameters P1 are P2 not supported and assumed to be 0).
*
* To get a more comprehensive support of camera Micmac models, you can consider using [three-photogrammetric-camera]{@link https://github.com/mbredif/three-photogrammetric-camera} instead.
*/
declare class OrientedImageMaterial extends THREE.ShaderMaterial {
/**
* @param { OrientedImageCamera[]} cameras - Array of {@link OrientedImageCamera}. Each camera will project a texture.
* [CameraCalibrationParser]{@link module:CameraCalibrationParser.parse} can used to create this array of camera from a configuration file.
* @param {Object} [options={}] - Object with one or more properties defining the material's appearance.
* Any property of the material (including any property inherited from
* [THREE.Material]{@link https://threejs.org/docs/#api/en/materials/Material} and
* [THREE.ShaderMaterial]{@link https://threejs.org/docs/#api/en/materials/ShaderMaterial}) can be passed in here.
* @param {Number} [options.side=THREE.DoubleSide] - We override default
* [THREE.Material.side]{@link https://threejs.org/docs/#api/en/materials/Material.side} from FrontSide to DoubleSide.
* @param {Boolean} [options.transparent=true] - We override default
* [THREE.Material.transparent]{@link https://threejs.org/docs/#api/en/materials/Material.transparent} from false to true.
* @param {Number} [options.opacity=0.1] - We override default
* [THREE.Material.opacity]{@link https://threejs.org/docs/#api/en/materials/Material.opacity} from 1 to 0.1.
* @param {Number} [options.alphaBorder=20] - Part of the texture that is blended, when texture crosses each other.
* For example, 10 means a border as large as 1 / 10 of the size of the texture is used to blend colors.
* @param {Number} [options.debugAlphaBorder=0] - Set this option to 1 to see influence of alphaBorder option.
*/
constructor(cameras: OrientedImageCamera[], options?: {
side?: number | undefined;
transparent?: boolean | undefined;
opacity?: number | undefined;
alphaBorder?: number | undefined;
debugAlphaBorder?: number | undefined;
});
alphaBorder: number;
cameras: OrientedImageCamera[];
group: THREE.Group;
fragmentShader: any;
/**
* Set new textures and new position/orientation of the camera set.
* @param {THREE.Texture} textures - Array of [THREE.Texture]{@link https://threejs.org/docs/#api/en/textures/Texture}.
* @param {Object} feature - New position / orientation of the set of cameras
* @param {THREE.Vector3} feature.position - New position.
* @param {THREE.Quaternion} feature.quaternion - New orientation.
* @param {Array} camerasNames - camera names of panoramic feature
*/
setTextures(textures: THREE.Texture, feature: {
position: THREE.Vector3;
quaternion: THREE.Quaternion;
}, camerasNames: any[]): void;
/**
* Udate the uniforms using the current value of camera.matrixWorld.
* Need to be called when the camera of the scene has changed.
* @param {THREE.Camera} viewCamera - Camera of the scene.
*/
updateUniforms(viewCamera: THREE.Camera): void;
}
import * as THREE from 'three';