请教个问题哈,createMesh时IGeometry好像没有提供uv索引,只提供了indices的几何索引,还是我理解错了,哪里能填充uv索引呢?
牛蛙~~~~~
有的,传入那个接口啥都可以传
好的,谢谢
大佬你好,打扰了,请问程序化创建网格和投射阴影相关的属性有什么,我自己创建了一个无顶面的立方体模型,但是无法正常投射阴影。默认的cube和blender导出的模型使用和程序化创建网格的模型相同的材质都能正常投射阴影
这是创建mesh的代码:
‘’’
import { Component, gfx, macro, Material, MeshRenderer, utils, Vec3, _decorator } from ‘cc’;
const { ccclass, property, requireComponent} = _decorator;
@ccclass(‘Test’)
@requireComponent(MeshRenderer)
export class Test extends Component {
@property({ type: Material })
public mat: Material | null = null;
start() {
this.mat.initialize({
effectName: 'standard-material.Mtl',
})
this.createMesh()
}
createMesh() {
let meshRenderer = this.getComponent(MeshRenderer);
if (!meshRenderer) {
meshRenderer = this.addComponent(MeshRenderer);
}
const model = this.getComponent(MeshRenderer)!;
//const segments: number = 4;
var positions: number[] = [
0, 0, 0,/*p0*/ 1, 0, 0,/*p1*/ 0, 1, 0,/*p2*/ 1, 1, 0,/*p3*/
1, 0, 0,/*p4*/ 1, 0, 1,/*p5*/ 1, 1, 0,/*p6*/ 1, 1, 1,/*p7*/
1, 0, 1,/*p8*/ 0, 0, 1,/*p9*/ 1, 1, 1,/*10*/ 0, 1, 1,/*11*/
0, 0, 1,/*12*/ 0, 0, 0,/*13*/ 0, 1, 1,/*14*/ 0, 1, 0,/*15*/
0, 0, 0,/*16*/ 1, 0, 0,/*17*/ 0, 0, 1,/*18*/ 1, 0, 1,/*19*/
];
var indices: number[] = [
//后面
0, 2, 1, 1, 2, 3,
//右面
4, 6, 5, 5, 6, 7,
//前面
8, 10, 9, 9, 10, 11,
//左面
12, 14, 13, 13, 14, 15,
//底面
16, 17, 18, 17, 19, 18
];
var uvs: number[] = [
//顶点 UV
0.33, 0.66, 0.66, 0.66, 0.33, 1, 0.66, 1,
0.66, 0,66, 0,66, 0.33, 1, 0.66, 1, 0.33,
0.66, 0.33, 0.33, 0.33, 0.66, 0, 0.33, 0,
0.33, 0.33, 0.33, 0.66, 0, 0.33, 0, 0.66,
0.33, 0.66, 0.66, 0.66, 0.33, 0.33, 0.66, 0.33
];
var normals: number[] = [
0,0,-1, 0,0,-1, 0,0,-1, 0,0,-1,
1,0,0, 1,0,0, 1,0,0, 1,0,0,
0,0,1, 0,0,1, 0,0,1, 0,0,1,
-1,0,0, -1,0,0, -1,0,0, -1,0,0,
0,-1,0, 0,-1,0, 0,-1,0, 0,-1,0
];
const primitiveMode = gfx.PrimitiveMode.TRIANGLE_LIST;
const attributes: any[] = [{
name: gfx.AttributeName.ATTR_NORMAL,
format: gfx.Format.RGB32F,
}];
var IGeometry = {
positions: positions,
indices: indices,
uvs: uvs,
normals: normals,
primitiveMode: primitiveMode,
attributes: attributes,
doubleSided: true
}
const customMesh = utils.createMesh(IGeometry);
model.mesh = customMesh;
model.material = this.mat;
}
onFocusInEditor(): void {
this.createMesh();
}
}
‘’’
要看看meshrenderer是否开了投影哈
我试了一下,他动态创建的这个方块确实不能投射阴影,希望大神帮忙看看,我也遇到了动态创建的网格无法接收和投射阴影的问题。
minPos maxPos加上就有阴影了
哈哈,那看来,我印象还是有处理过。
我没印象,反正我按他们的demo来做,创建好就有了