将纹理设置为彩色 CC3MeshNode
Set texture to colored CC3MeshNode
首先我将 material 的颜色设置为节点:
CC3MeshNode *node = [self.modelNode getMeshNodeNamed:nodeName];
CC3Material *material = [CC3Material material];
material.color = [CCColor colorWithUIColor:[UIColor colorWithHexString:color]];
node.material = material;
node.visible = YES;
稍后我需要用纹理填充这个节点。我不能
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
material.texture = texture;
node.material = material;
或
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
[node.material addTexture:texture]
或
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
node.material.color = [CCColor colorWithRed:1 green:1 blue:1 alpha:0];
[node.material addTexture:texture];
或
node.material = nil;
CC3Material *material = [CC3Material material];
node.material = material;
[node.material addTexture:texture];
returns没有纹理的白色节点。
但是在开始时将纹理设置为节点有效:
CC3MeshNode *node = [self.modelNode getMeshNodeNamed:nodeName];
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
[node.material addTexture:texture];
node.visible = YES;
知道如何在设置颜色后将纹理应用到节点吗?
您可能正在使用不支持纹理的着色器。
如果您允许 Cocos3D 自动为您 select 着色器,它会在选择着色器时考虑节点的某些方面。决定使用哪个着色器的主要方面之一是节点是否有纹理。
Cocos3D selects 着色器,当你显式调用 selectShaders
方法时,或者第一次渲染节点时。一旦着色器最初被 selected,如果节点上的某些内容发生变化,它们不会自动重新selected。
您可以通过在您的节点上调用 removeShaders
然后调用 selectShaders
为您的节点创建 Cocos3D 到 select 新着色器再次,或者等到节点再次呈现。
另一种方法是专门分配您自己的着色器,它可以适应您将对节点进行的所有更改。
首先我将 material 的颜色设置为节点:
CC3MeshNode *node = [self.modelNode getMeshNodeNamed:nodeName];
CC3Material *material = [CC3Material material];
material.color = [CCColor colorWithUIColor:[UIColor colorWithHexString:color]];
node.material = material;
node.visible = YES;
稍后我需要用纹理填充这个节点。我不能
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
material.texture = texture;
node.material = material;
或
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
[node.material addTexture:texture]
或
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
node.material.color = [CCColor colorWithRed:1 green:1 blue:1 alpha:0];
[node.material addTexture:texture];
或
node.material = nil;
CC3Material *material = [CC3Material material];
node.material = material;
[node.material addTexture:texture];
returns没有纹理的白色节点。
但是在开始时将纹理设置为节点有效:
CC3MeshNode *node = [self.modelNode getMeshNodeNamed:nodeName];
CC3Texture *texture = [CC3Texture textureFromFile:@"texture.png"];
[node.material addTexture:texture];
node.visible = YES;
知道如何在设置颜色后将纹理应用到节点吗?
您可能正在使用不支持纹理的着色器。
如果您允许 Cocos3D 自动为您 select 着色器,它会在选择着色器时考虑节点的某些方面。决定使用哪个着色器的主要方面之一是节点是否有纹理。
Cocos3D selects 着色器,当你显式调用 selectShaders
方法时,或者第一次渲染节点时。一旦着色器最初被 selected,如果节点上的某些内容发生变化,它们不会自动重新selected。
您可以通过在您的节点上调用 removeShaders
然后调用 selectShaders
为您的节点创建 Cocos3D 到 select 新着色器再次,或者等到节点再次呈现。
另一种方法是专门分配您自己的着色器,它可以适应您将对节点进行的所有更改。