@tresjs/core 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composables/useLogger.d.ts +1 -1
- package/dist/core/index.d.ts +8 -8
- package/dist/core/useCamera/{useCamera.d.ts → index.d.ts} +0 -0
- package/dist/core/useCatalog/{useCatalog.d.ts → index.d.ts} +0 -0
- package/dist/core/useInstanceCreator/{useInstanceCreator.d.ts → index.d.ts} +0 -0
- package/dist/core/useLoader/index.d.ts +13 -0
- package/dist/core/useRenderLoop/index.d.ts +15 -0
- package/dist/core/useRenderer/component.d.ts +37 -0
- package/dist/core/useRenderer/index.d.ts +81 -0
- package/dist/core/useScene/component.d.ts +6 -0
- package/dist/core/useScene/index.d.ts +4 -0
- package/dist/core/useTexture/{useTexture.d.ts → index.d.ts} +0 -0
- package/dist/index.d.ts +0 -1
- package/dist/models/AkuAku.gltf +1177 -0
- package/dist/tres.js +277 -262
- package/dist/tres.umd.cjs +2 -2
- package/package.json +2 -2
- package/dist/components/TresCanvas.vue.d.ts +0 -124
- package/dist/core/useLoader/useLoader.d.ts +0 -18
- package/dist/core/useLoop/useLoop.d.ts +0 -4
- package/dist/core/useRenderer/useRenderer.d.ts +0 -18
- package/dist/core/useScene/useScene.d.ts +0 -6
package/dist/tres.umd.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v0.
|
|
3
|
+
* version: v0.5.0
|
|
4
4
|
* (c) 2022
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
(function(
|
|
8
|
+
(function(u,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("vue"),require("@vueuse/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","@vueuse/core","three"],o):(u=typeof globalThis<"u"?globalThis:u||self,o(u.tres={},u.Vue,u.VueUseCore,u.Three))})(this,function(u,o,f,m){"use strict";function ee(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const te=ee(m);var V=(e=>(e.Perspective="Perspective",e.Orthographic="Orthographic",e))(V||{});const b={cameras:[]},ne=45;let P;function A(){const{width:e,height:t}=f.useWindowSize();function n(c="Perspective",i){if(c==="Perspective"){const{near:g,far:C,fov:h}=i||{near:.1,far:1e3,fov:ne};P=new m.PerspectiveCamera(h,r.value,g,C),b.cameras.push(P)}else{const{left:g,right:C,top:h,bottom:w,near:O,far:L}=i||{left:-100,right:100,top:100,bottom:-100,near:.1,far:1e3};P=new m.OrthographicCamera(g,C,h,w,O,L),b.cameras.push(P)}return b.cameras.push(P),P}const r=o.computed(()=>e.value/t.value),a=o.computed(()=>b.cameras[0]);function s(){a.value instanceof m.PerspectiveCamera&&(a.value.aspect=r.value),a.value.updateProjectionMatrix()}function p(c){const i=o.inject("camera");c&&i&&(i.value=c),b.cameras.push(c),c instanceof m.PerspectiveCamera&&(c.aspect=r.value),c.updateProjectionMatrix()}return o.watch(r,s),{activeCamera:a,createCamera:n,updateCamera:s,pushCamera:p}}let U={...te};delete U.Scene;function $(){return{extend:t=>{U=Object.assign(U,t)},catalogue:U}}const re=e=>typeof e<"u",T=e=>!!e&&e.constructor===Array;function ae(e){return typeof e=="number"?[e,e,e]:e instanceof m.Vector3?[e.x,e.y,e.z]:e}function W(e){return e instanceof m.Color?e:Array.isArray(e)?new m.Color(...e):new m.Color(e)}const q="[TresJS \u25B2 \u25A0 \u25CF] ";function z(){function e(r,a){console.error(`${q} ${r}`,a||"")}function t(r){console.warn(`${q} ${r}`)}function n(r,a){}return{logError:e,logWarning:t,logMessage:n}}const oe=["rotation","scale","position"];function N(){const{catalogue:e}=$(),{logMessage:t,logError:n}=z();function r(){return Object.entries(e).filter(([a,s])=>{var p,c;return(c=(p=s==null?void 0:s.prototype)==null?void 0:p.constructor)==null?void 0:c.toString().includes("class")}).map(([a,s])=>{const p=o.defineComponent({name:a,setup(c,{slots:i,attrs:g,...C}){t(a,{props:c,slots:i,attrs:g,ctx:C});let h;const{scene:w}=I(),{pushCamera:O}=A();function L(){if((i==null?void 0:i.default)&&(i==null?void 0:i.default())){const v=i.default().map(l=>{var y;let M;return(y=l==null?void 0:l.props)!=null&&y.args?M=new e[l.type.name](...l.props.args):M=new e[l.type.name],l!=null&&l.props&&j(l.props,M),M});h=new s(...v)}else g.args?h=new s(...g.args):h=new s;j(g,h),a==="PerspectiveCamera"||a==="OrtographicCamera"?O(h):w==null||w.value.add(h),t("Instance added",w),C.expose(h)}function j(v,l){Object.entries(v).forEach(([M,y])=>{const S=M.replace(/(-\w)/g,_=>_[1].toUpperCase());if(!(S==="args"||y===void 0)){oe.includes(M)&&y&&(y=ae(y));try{l[S]&&re(l[S].set)?T(y)?l[S].set(...y):l[S].set(y):(y===""&&(y=!0),l[S]=y)}catch(_){n(`There was an error setting ${S} property`,_)}}}),v.ref&&(v.ref=l)}return L(),()=>{}}});return[a,p]})}return{createComponentInstances:r}}const k=f.createEventHook(),G=f.createEventHook(),J=f.createEventHook(),K=new m.Clock,{pause:se,resume:ie,isActive:ce}=f.useRafFn(()=>{const e=K.getElapsedTime(),t=K.getDelta();k.trigger({delta:t,elapsed:e}),G.trigger({delta:t,elapsed:e}),J.trigger({delta:t,elapsed:e})},{immediate:!1});function B(){return{onBeforeLoop:k.on,onLoop:G.on,onAfterLoop:J.on,pause:se,resume:ie,isActive:ce}}const ue=o.shallowRef(new m.Scene);function I(){return{scene:ue}}function Q(e){const t={nodes:{},materials:{}};return e&&e.traverse(n=>{n.name&&(t.nodes[n.name]=n),n.material&&!t.materials[n.material.name]&&(t.materials[n.material.name]=n.material)}),t}async function le(e,t,n,r,a){const{logError:s}=z(),p=new e;a&&a(p),n&&n(e);const i=(Array.isArray(t)?t:[t]).map(g=>new Promise((C,h)=>{p.load(g,w=>{w.scene&&Object.assign(w,Q(w.scene)),C(w)},r,w=>h(s("[useLoader] - Failed to load resource",w)))}));return T(t)?await Promise.all(i):await i[0]}async function fe(e){const t=new m.LoadingManager,n=new m.TextureLoader(t),r=a=>new Promise((s,p)=>{n.load(a,c=>s(c),()=>null,()=>{p(new Error("[useTextures] - Failed to load texture"))})});if(T(e)){const a=await Promise.all(e.map(s=>r(s)));return e.length>1?a:a[0]}else{const{map:a,displacementMap:s,normalMap:p,roughnessMap:c,metalnessMap:i,aoMap:g}=e;return{map:a?await r(a):null,displacementMap:s?await r(s):null,normalMap:p?await r(p):null,roughnessMap:c?await r(c):null,metalnessMap:i?await r(i):null,aoMap:g?await r(g):null}}}const x=o.reactive({});function pe(){function e(n){return x[n]}function t(n,r){x[n]=r}return{state:x,...o.toRefs(x),getState:e,setState:t}}const d=o.shallowRef(),D=o.ref(!1);function X(e,t,n){const{alpha:r=!1,antialias:a,depth:s,logarithmicDepthBuffer:p,failIfMajorPerformanceCaveat:c,precision:i,premultipliedAlpha:g,stencil:C,shadows:h=!1,shadowMapType:w=m.PCFShadowMap,physicallyCorrectLights:O=!1,outputEncoding:L=m.LinearEncoding,toneMapping:j=m.NoToneMapping,toneMappingExposure:v=1,context:l=void 0,powerPreference:M="default",preserveDrawingBuffer:y=!1,clearColor:S=W("#000000"),windowSize:_=!1}=n,{width:F,height:R}=_?f.useWindowSize():f.useElementSize(t),{pixelRatio:Y}=f.useDevicePixelRatio(),{pause:we,resume:Ce}=B(),ye=o.computed(()=>F.value/R.value),Z=()=>{!d.value||(d.value.setSize(F.value,R.value),d.value.setPixelRatio(Y.value))},E=()=>{!d.value||(d.value.shadowMap.enabled=f.resolveUnref(h),d.value.outputEncoding=f.resolveUnref(L),d.value.shadowMap.type=f.resolveUnref(w),d.value.physicallyCorrectLights=f.resolveUnref(O),d.value.toneMapping=f.resolveUnref(j),d.value.toneMappingExposure=f.resolveUnref(v),d.value.setClearColor(W(f.resolveUnref(S))))},Se=()=>{const H=f.unrefElement(e);d.value||!H||(d.value=new m.WebGLRenderer({canvas:H,alpha:r,antialias:a,context:l,depth:s,failIfMajorPerformanceCaveat:c,logarithmicDepthBuffer:p,powerPreference:M,precision:i,stencil:C,preserveDrawingBuffer:y,premultipliedAlpha:g}),E(),Z(),Ce(),D.value=!0)},Me=()=>{!d.value||(d.value.dispose(),d.value=void 0,D.value=!1,we())};return o.watch([F,R,Y],Z),o.watch(()=>[h,w,L,O,j,v,S],E),o.watch(()=>[e,t],()=>{f.unrefElement(e)&&f.unrefElement(t)&&Se()},{immediate:!0,deep:!0}),{renderer:d,isReady:D,dispose:Me,aspectRatio:ye}}const me=o.defineComponent({name:"TresCanvas",props:{shadows:Boolean,shadowMapType:Object,physicallyCorrectLights:Boolean,outputEncoding:Object,toneMapping:Object,toneMappingExposure:Number,context:Object,powerPreference:Object,preserveDrawingBuffer:Boolean,clearColor:String,windowSize:Boolean},setup(e,{slots:t,attrs:n}){const{logError:r}=z(),a=o.ref(),s=o.ref(),{renderer:p,dispose:c,aspectRatio:i}=X(a,s,e),g=o.shallowRef();return o.provide("camera",g),o.provide("renderer",p),o.provide("aspect-ratio",i),t.default&&!t.default().some(C=>C.type.name==="Scene")&&r("TresCanvas must contain a Scene component."),t.default&&!t.default().some(C=>C.type.name==="PerspectiveCamera"||C.type.name==="OrtographicCamera")&&r("Scene must contain a Camera component."),o.onBeforeUnmount(()=>c()),()=>{if(t.default)return o.h("div",{ref:s,style:{position:"relative",width:"100%",height:"100vh",...n.style}},[o.h("canvas",{ref:a,style:{width:"100%",height:"100%",position:"absolute",top:0,left:0}}),t.default()])}}}),de=o.defineComponent({name:"Scene",setup(e,{slots:t}){const{scene:n}=I(),r=o.inject("renderer"),{activeCamera:a}=A(),{onLoop:s}=B();return o.provide("local-scene",n),s(()=>{(r==null?void 0:r.value)&&(a==null?void 0:a.value)&&(n==null?void 0:n.value)&&r.value.render(n==null?void 0:n.value,a.value)}),()=>{if(t.default)return t.default()}}}),ge=Symbol("UseTresState"),he={install(e){e.component("TresCanvas",me),e.component("Scene",de);const{createComponentInstances:t}=N();t().forEach(([r,a])=>{e.component(r,a)})}};u.CameraType=V,u.UseTresStateSymbol=ge,u.default=he,u.trasverseObjects=Q,u.useCamera=A,u.useCatalog=$,u.useInstanceCreator=N,u.useLoader=le,u.useRenderLoop=B,u.useRenderer=X,u.useScene=I,u.useTexture=fe,u.useTres=pe,Object.defineProperties(u,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tresjs/core",
|
|
3
3
|
"description": "Declarative ThreeJS using Vue Components",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
|
|
7
7
|
"files": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@alvarosabu/utils": "^2.2.0",
|
|
40
40
|
"@histoire/plugin-vue": "0.11.7",
|
|
41
|
-
"@tresjs/cientos": "^0.
|
|
41
|
+
"@tresjs/cientos": "^0.4.0",
|
|
42
42
|
"@vitejs/plugin-vue": "^3.2.0",
|
|
43
43
|
"@vitest/coverage-c8": "^0.25.1",
|
|
44
44
|
"@vitest/ui": "^0.25.1",
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { TextureEncoding, WebGLRenderer } from 'three';
|
|
2
|
-
import { CameraType, PerspectiveCameraOptions, Camera } from '../core/useCamera/useCamera';
|
|
3
|
-
import { VectorFlexibleParams } from '../utils/normalize';
|
|
4
|
-
export interface CanvasCameraOptions extends PerspectiveCameraOptions {
|
|
5
|
-
position: VectorFlexibleParams;
|
|
6
|
-
}
|
|
7
|
-
declare const _sfc_main: import("vue").DefineComponent<{
|
|
8
|
-
camera: {
|
|
9
|
-
type: ObjectConstructor;
|
|
10
|
-
required: false;
|
|
11
|
-
};
|
|
12
|
-
ortographic: {
|
|
13
|
-
type: BooleanConstructor;
|
|
14
|
-
required: false;
|
|
15
|
-
};
|
|
16
|
-
gl: {
|
|
17
|
-
type: null;
|
|
18
|
-
required: false;
|
|
19
|
-
};
|
|
20
|
-
shadows: {
|
|
21
|
-
type: BooleanConstructor;
|
|
22
|
-
required: false;
|
|
23
|
-
default: boolean;
|
|
24
|
-
};
|
|
25
|
-
physicallyCorrectLights: {
|
|
26
|
-
type: BooleanConstructor;
|
|
27
|
-
required: false;
|
|
28
|
-
default: boolean;
|
|
29
|
-
};
|
|
30
|
-
outputEncoding: {
|
|
31
|
-
type: null;
|
|
32
|
-
required: false;
|
|
33
|
-
default: TextureEncoding;
|
|
34
|
-
};
|
|
35
|
-
alpha: {
|
|
36
|
-
type: BooleanConstructor;
|
|
37
|
-
required: false;
|
|
38
|
-
default: boolean;
|
|
39
|
-
};
|
|
40
|
-
background: {
|
|
41
|
-
type: StringConstructor;
|
|
42
|
-
required: false;
|
|
43
|
-
};
|
|
44
|
-
async: {
|
|
45
|
-
type: BooleanConstructor;
|
|
46
|
-
required: false;
|
|
47
|
-
default: boolean;
|
|
48
|
-
};
|
|
49
|
-
}, {
|
|
50
|
-
props: any;
|
|
51
|
-
renderer: WebGLRenderer | null;
|
|
52
|
-
disposeRenderer: () => void;
|
|
53
|
-
canvasRef: import("vue").Ref<any>;
|
|
54
|
-
renderComponent: import("vue").Ref<boolean>;
|
|
55
|
-
scene: import("three").Scene | null;
|
|
56
|
-
clearScene: () => void;
|
|
57
|
-
slots: Readonly<{
|
|
58
|
-
[name: string]: import("vue").Slot | undefined;
|
|
59
|
-
}>;
|
|
60
|
-
attrs: {
|
|
61
|
-
[x: string]: unknown;
|
|
62
|
-
};
|
|
63
|
-
createCamera: (cameraType?: CameraType | undefined, options?: PerspectiveCameraOptions | import('../core/useCamera/useCamera').OrthographicCameraOptions | undefined) => Camera;
|
|
64
|
-
camera: Camera;
|
|
65
|
-
tres: {
|
|
66
|
-
getState: (key: string) => any;
|
|
67
|
-
setState: (key: string, value: any) => void;
|
|
68
|
-
camera?: import("vue").Ref<Camera | undefined> | undefined;
|
|
69
|
-
renderer?: import("vue").Ref<WebGLRenderer | undefined> | undefined;
|
|
70
|
-
state: import("../core").TresState;
|
|
71
|
-
};
|
|
72
|
-
thereIsCameraAlready: boolean;
|
|
73
|
-
setupRenderer: () => void;
|
|
74
|
-
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
75
|
-
camera: {
|
|
76
|
-
type: ObjectConstructor;
|
|
77
|
-
required: false;
|
|
78
|
-
};
|
|
79
|
-
ortographic: {
|
|
80
|
-
type: BooleanConstructor;
|
|
81
|
-
required: false;
|
|
82
|
-
};
|
|
83
|
-
gl: {
|
|
84
|
-
type: null;
|
|
85
|
-
required: false;
|
|
86
|
-
};
|
|
87
|
-
shadows: {
|
|
88
|
-
type: BooleanConstructor;
|
|
89
|
-
required: false;
|
|
90
|
-
default: boolean;
|
|
91
|
-
};
|
|
92
|
-
physicallyCorrectLights: {
|
|
93
|
-
type: BooleanConstructor;
|
|
94
|
-
required: false;
|
|
95
|
-
default: boolean;
|
|
96
|
-
};
|
|
97
|
-
outputEncoding: {
|
|
98
|
-
type: null;
|
|
99
|
-
required: false;
|
|
100
|
-
default: TextureEncoding;
|
|
101
|
-
};
|
|
102
|
-
alpha: {
|
|
103
|
-
type: BooleanConstructor;
|
|
104
|
-
required: false;
|
|
105
|
-
default: boolean;
|
|
106
|
-
};
|
|
107
|
-
background: {
|
|
108
|
-
type: StringConstructor;
|
|
109
|
-
required: false;
|
|
110
|
-
};
|
|
111
|
-
async: {
|
|
112
|
-
type: BooleanConstructor;
|
|
113
|
-
required: false;
|
|
114
|
-
default: boolean;
|
|
115
|
-
};
|
|
116
|
-
}>>, {
|
|
117
|
-
ortographic: boolean;
|
|
118
|
-
shadows: boolean;
|
|
119
|
-
physicallyCorrectLights: boolean;
|
|
120
|
-
outputEncoding: any;
|
|
121
|
-
alpha: boolean;
|
|
122
|
-
async: boolean;
|
|
123
|
-
}>;
|
|
124
|
-
export default _sfc_main;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { LoadingManager } from 'three';
|
|
2
|
-
export declare function useLoadingManager(): {
|
|
3
|
-
loadingManager: LoadingManager;
|
|
4
|
-
loadingManagerRef: import("vue").Ref<{
|
|
5
|
-
onStart?: ((url: string, loaded: number, total: number) => void) | undefined;
|
|
6
|
-
onLoad: () => void;
|
|
7
|
-
onProgress: (url: string, loaded: number, total: number) => void;
|
|
8
|
-
onError: (url: string) => void;
|
|
9
|
-
setURLModifier: (callback?: ((url: string) => string) | undefined) => LoadingManager;
|
|
10
|
-
resolveURL: (url: string) => string;
|
|
11
|
-
itemStart: (url: string) => void;
|
|
12
|
-
itemEnd: (url: string) => void;
|
|
13
|
-
itemError: (url: string) => void;
|
|
14
|
-
addHandler: (regex: RegExp, loader: import("three").Loader) => LoadingManager;
|
|
15
|
-
removeHandler: (regex: RegExp) => LoadingManager;
|
|
16
|
-
getHandler: (file: string) => import("three").Loader | null;
|
|
17
|
-
}>;
|
|
18
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Ref } from 'vue';
|
|
2
|
-
import { TextureEncoding, ToneMapping, WebGLRenderer, WebGLRendererParameters, Color } from 'three';
|
|
3
|
-
export interface RendererOptions extends WebGLRendererParameters {
|
|
4
|
-
shadows?: boolean;
|
|
5
|
-
controls?: boolean;
|
|
6
|
-
physicallyCorrectLights?: boolean;
|
|
7
|
-
outputEncoding?: TextureEncoding;
|
|
8
|
-
toneMapping?: ToneMapping;
|
|
9
|
-
context?: WebGLRenderingContext | undefined;
|
|
10
|
-
powerPreference?: string;
|
|
11
|
-
preserveDrawingBuffer?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare function useRenderer(canvas: Ref<HTMLCanvasElement>, options?: RendererOptions): {
|
|
14
|
-
renderer: WebGLRenderer | null;
|
|
15
|
-
setClearColor: (color: Color | string | number) => void;
|
|
16
|
-
updateRenderer: () => void;
|
|
17
|
-
disposeRenderer: () => void;
|
|
18
|
-
};
|