常用变量
必要参数
和原生的 ThreeJS
结构基本一致,但通过组件化的思维,让其看起来更直观舒服。
场景(scene)以及 渲染器(renderer)
对于组件 TresCanvas
,它将一次性创建了 ThreeJS
的渲染器 WebGLRendere
以及场景 scene
,并将他们绑定。
<template>
<TresCanvas ref="tcRef" window-size>
<!-- 场景里需要的内容挂这里 -->
<MyModel /><!-- tip 说明中引用的自定义组件 -->
</TresCanvas>
</template>
<script lang="ts" setup>
import { ref, watchEffect } from 'vue'
import { TresCanvas } from '@tresjs/core'
const tcRef = ref()
watchEffect(() => {
if (tcRef.value) {
let renderer = tcRef.value.context.renderer.value
let scene = tcRef.value.context.scene.value
let camera = tcRef.value.context.camera.value
console.log(tcRef.value.context)
}
})
</script>
TIP
- 例子中
window-size
设置选项为WebGLRendere
自适应窗口的大小,类似这样的参数请移步:tresjs-点击详情,他们基本包含了您要的ThreeJS
关于场景(scene)以及 渲染器(renderer)的参数设置 threejs-部分描述:点击详情。
<template>
<TresCanvas v-bind="state">
</TresCanvas>
</template>
<script lang="ts" setup>
import { reactive } from 'vue'
import { TresCanvas } from '@tresjs/core'
const state = reactive({
clearColor: '#201919',
shadows: true,
alpha: false,
shadowMapType
.... //其余参数
})
</script>
- 若需要设置更多原生
ThreeJS
对 scene 和 renderer 的相关参数,请参考实例代码中tcRef
部分。 - 若其组件在
TresCanvas
内部,则可以使用Tres
的API:useTresContext
移步:tresjs-点击详情
// MyModel.vue
<script lang="ts" setup>
import { useTresContext } from '@tresjs/core'
const { camera, renderer, cameras, ... } = useTresContext()
</script>
相机(camera)
<template>
<TresCanvas>
<TresPerspectiveCamera ref="tpcRef"/>
</TresCanvas>
</template>
<script lang="ts" setup>
import { ref, watchEffect } from 'vue'
import { TresCanvas } from '@tresjs/core'
const tpcRef = ref()
watchEffect(() => {
if (tcRef.value) {
let camera = tpcRef.value
console.log(camera)
}
})
</script>
INFO
TresPerspectiveCamera
只是我们举个常用的例子,Tres
+OrthographicCamera
、StereoCamera
、CubeCamera
、ArrayCamera
都是支持的。具体参考请移步:threejs-点击详情- 关于参数的挂载: 具体参考请移步:tresjs-点击详情
// 关于实例化默认参数
new THREE.PerspectiveCamera( 45, 1024 / 768, 1, 1000 );
<!-- Tres 实例化默认参数表达 -->
<TresPerspectiveCamera :args="[45, 1024 / 768, 1, 1000]"/>
<!-- Tres 具体某个参数 far -->
<TresPerspectiveCamera :far="1000"/>
- 同样访问和设置相机的属性可以参考实例代码中
tpcRef
部分。
灯光(Light)
<template>
<TresCanvas>
<TresAmbientLight ref="taRef"/>
</TresCanvas>
</template>
<script lang="ts" setup>
import { ref, watchEffect } from 'vue'
import { TresCanvas } from '@tresjs/core'
const taRef = ref()
watchEffect(() => {
if (tcRef.value) {
let light = taRef.value
console.log(light)
}
})
</script>
INFO
TresAmbientLight
只是我们举个常用的例子,Tres
+DirectionalLight
、HemisphereLight
、LightProbe
、PointLight
、RectAreaLight
、SpotLight
都是支持的。具体参考请移步:threejs-点击详情- 关于参数的挂载: 具体参考请移步:tresjs-点击详情
// 关于实例化默认参数
new THREE.AmbientLight( '#404040' );
<!-- Tres 实例化默认参数表达 -->
<TresAmbientLight :args="['#404040']"/>
<!-- Tres 具体某个参数 far -->
<TresAmbientLight :color="#404040"/>
- 同样访问和设置光源的属性可以参考实例代码中
taRef
部分。