starry / backend /libs /three /core /BufferAttribute.js
k-l-lambda's picture
feat: add Python ML services (CPU mode) with model download
2b7aae2
import { Vector4 } from '../math/Vector4.js';
import { Vector3 } from '../math/Vector3.js';
import { Vector2 } from '../math/Vector2.js';
import { Color } from '../math/Color.js';
import { StaticDrawUsage } from '../constants.js';
const _vector = /*@__PURE__*/ new Vector3();
const _vector2 = /*@__PURE__*/ new Vector2();
class BufferAttribute {
constructor(array, itemSize, normalized) {
if (Array.isArray(array)) {
throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.');
}
this.name = '';
this.array = array;
this.itemSize = itemSize;
this.count = array !== undefined ? array.length / itemSize : 0;
this.normalized = normalized === true;
this.usage = StaticDrawUsage;
this.updateRange = { offset: 0, count: -1 };
this.version = 0;
}
onUploadCallback() {}
set needsUpdate(value) {
if (value === true) this.version++;
}
setUsage(value) {
this.usage = value;
return this;
}
copy(source) {
this.name = source.name;
this.array = new source.array.constructor(source.array);
this.itemSize = source.itemSize;
this.count = source.count;
this.normalized = source.normalized;
this.usage = source.usage;
return this;
}
copyAt(index1, attribute, index2) {
index1 *= this.itemSize;
index2 *= attribute.itemSize;
for (let i = 0, l = this.itemSize; i < l; i++) {
this.array[index1 + i] = attribute.array[index2 + i];
}
return this;
}
copyArray(array) {
this.array.set(array);
return this;
}
copyColorsArray(colors) {
const array = this.array;
let offset = 0;
for (let i = 0, l = colors.length; i < l; i++) {
let color = colors[i];
if (color === undefined) {
console.warn('THREE.BufferAttribute.copyColorsArray(): color is undefined', i);
color = new Color();
}
array[offset++] = color.r;
array[offset++] = color.g;
array[offset++] = color.b;
}
return this;
}
copyVector2sArray(vectors) {
const array = this.array;
let offset = 0;
for (let i = 0, l = vectors.length; i < l; i++) {
let vector = vectors[i];
if (vector === undefined) {
console.warn('THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i);
vector = new Vector2();
}
array[offset++] = vector.x;
array[offset++] = vector.y;
}
return this;
}
copyVector3sArray(vectors) {
const array = this.array;
let offset = 0;
for (let i = 0, l = vectors.length; i < l; i++) {
let vector = vectors[i];
if (vector === undefined) {
console.warn('THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i);
vector = new Vector3();
}
array[offset++] = vector.x;
array[offset++] = vector.y;
array[offset++] = vector.z;
}
return this;
}
copyVector4sArray(vectors) {
const array = this.array;
let offset = 0;
for (let i = 0, l = vectors.length; i < l; i++) {
let vector = vectors[i];
if (vector === undefined) {
console.warn('THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i);
vector = new Vector4();
}
array[offset++] = vector.x;
array[offset++] = vector.y;
array[offset++] = vector.z;
array[offset++] = vector.w;
}
return this;
}
applyMatrix3(m) {
if (this.itemSize === 2) {
for (let i = 0, l = this.count; i < l; i++) {
_vector2.fromBufferAttribute(this, i);
_vector2.applyMatrix3(m);
this.setXY(i, _vector2.x, _vector2.y);
}
} else if (this.itemSize === 3) {
for (let i = 0, l = this.count; i < l; i++) {
_vector.fromBufferAttribute(this, i);
_vector.applyMatrix3(m);
this.setXYZ(i, _vector.x, _vector.y, _vector.z);
}
}
return this;
}
applyMatrix4(m) {
for (let i = 0, l = this.count; i < l; i++) {
_vector.x = this.getX(i);
_vector.y = this.getY(i);
_vector.z = this.getZ(i);
_vector.applyMatrix4(m);
this.setXYZ(i, _vector.x, _vector.y, _vector.z);
}
return this;
}
applyNormalMatrix(m) {
for (let i = 0, l = this.count; i < l; i++) {
_vector.x = this.getX(i);
_vector.y = this.getY(i);
_vector.z = this.getZ(i);
_vector.applyNormalMatrix(m);
this.setXYZ(i, _vector.x, _vector.y, _vector.z);
}
return this;
}
transformDirection(m) {
for (let i = 0, l = this.count; i < l; i++) {
_vector.x = this.getX(i);
_vector.y = this.getY(i);
_vector.z = this.getZ(i);
_vector.transformDirection(m);
this.setXYZ(i, _vector.x, _vector.y, _vector.z);
}
return this;
}
set(value, offset = 0) {
this.array.set(value, offset);
return this;
}
getX(index) {
return this.array[index * this.itemSize];
}
setX(index, x) {
this.array[index * this.itemSize] = x;
return this;
}
getY(index) {
return this.array[index * this.itemSize + 1];
}
setY(index, y) {
this.array[index * this.itemSize + 1] = y;
return this;
}
getZ(index) {
return this.array[index * this.itemSize + 2];
}
setZ(index, z) {
this.array[index * this.itemSize + 2] = z;
return this;
}
getW(index) {
return this.array[index * this.itemSize + 3];
}
setW(index, w) {
this.array[index * this.itemSize + 3] = w;
return this;
}
setXY(index, x, y) {
index *= this.itemSize;
this.array[index + 0] = x;
this.array[index + 1] = y;
return this;
}
setXYZ(index, x, y, z) {
index *= this.itemSize;
this.array[index + 0] = x;
this.array[index + 1] = y;
this.array[index + 2] = z;
return this;
}
setXYZW(index, x, y, z, w) {
index *= this.itemSize;
this.array[index + 0] = x;
this.array[index + 1] = y;
this.array[index + 2] = z;
this.array[index + 3] = w;
return this;
}
onUpload(callback) {
this.onUploadCallback = callback;
return this;
}
clone() {
return new this.constructor(this.array, this.itemSize).copy(this);
}
toJSON() {
const data = {
itemSize: this.itemSize,
type: this.array.constructor.name,
array: Array.prototype.slice.call(this.array),
normalized: this.normalized,
};
if (this.name !== '') data.name = this.name;
if (this.usage !== StaticDrawUsage) data.usage = this.usage;
if (this.updateRange.offset !== 0 || this.updateRange.count !== -1) data.updateRange = this.updateRange;
return data;
}
}
BufferAttribute.prototype.isBufferAttribute = true;
//
class Int8BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Int8Array(array), itemSize, normalized);
}
}
class Uint8BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Uint8Array(array), itemSize, normalized);
}
}
class Uint8ClampedBufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Uint8ClampedArray(array), itemSize, normalized);
}
}
class Int16BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Int16Array(array), itemSize, normalized);
}
}
class Uint16BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Uint16Array(array), itemSize, normalized);
}
}
class Int32BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Int32Array(array), itemSize, normalized);
}
}
class Uint32BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Uint32Array(array), itemSize, normalized);
}
}
class Float16BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Uint16Array(array), itemSize, normalized);
}
}
Float16BufferAttribute.prototype.isFloat16BufferAttribute = true;
class Float32BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Float32Array(array), itemSize, normalized);
}
}
class Float64BufferAttribute extends BufferAttribute {
constructor(array, itemSize, normalized) {
super(new Float64Array(array), itemSize, normalized);
}
}
//
export {
Float64BufferAttribute,
Float32BufferAttribute,
Float16BufferAttribute,
Uint32BufferAttribute,
Int32BufferAttribute,
Uint16BufferAttribute,
Int16BufferAttribute,
Uint8ClampedBufferAttribute,
Uint8BufferAttribute,
Int8BufferAttribute,
BufferAttribute,
};