Scenekit에로드하는 Collada 모델이 있습니다. 모델에서 히트 테스트를 수행하면 맞았던 모델의 텍스처 좌표를 검색 할 수 있습니다.IOS8 Scenekit에서 텍스처 좌표로 텍스처 페인팅
이 텍스처 좌표를 사용하면 텍스처 좌표를 색상으로 바꿀 수 있어야합니다. 이렇게하면 모델을 그릴 수 있습니다.
지금까지 내가 잘못하면 나를 바로 잡습니다.
지금까지 많은 기사를 읽었지만 셰이더를 제대로 이해하지 못했습니다. (좀 펑키 효과 ;-)
내 버텍스 쉐이더 얻을 않았지만 :
precision highp float;
attribute vec4 position;
attribute vec2 textureCoordinate;
attribute vec2 aTexureCoordForColor; //coordinates from the hittest
uniform mat4 modelViewProjection;
varying vec2 aTexureCoordForColorVarying; // passing to the fragment shader here
varying vec2 texCoord;
void main(void) {
// Pass along to the fragment shader
texCoord = textureCoordinate;
aTexureCoordForColorVarying = aTexureCoordForColor; //assigning here
// output the projected position
gl_Position = modelViewProjection * position;
}
내 조각 쉐이더 당신은 알려 주시기 바랍니다 더 많은 코드가 필요한 경우
precision highp float;
uniform sampler2D yourTexture;
uniform vec2 uResolution;
uniform int uTexureCoordsCount;
varying vec2 texCoord;
varying vec2 aTexureCoordForColorVarying;
void main(void) {
??????????? no idea anymore what to do here
gl_FragColor = texture2D(yourTexture, texCoord);
//
합니다.
와우 ... 이것은 지금까지 최고의 정보입니다 ... 감사합니다. 이 정보를 가지고 최선을 다해 알려 드리겠습니다. – Vilois
네 .. 고마워요 .... 일들이 훨씬 더 명확 해졌습니다. ..... shaderModifier를 추가했습니다. 위 코드를 약간 변경했으나 일반적으로 동일합니다 ..... 감사합니다. – Vilois
@rickster 당신의 대답은 명확하고 내 문제를 해결하는 데 도움이 될 것이라고 생각했습니다.문제가 해결되지 않아 http://stackoverflow.com/questions/38999782/how-to-use-a-shadermodifier-to-alter-the-color-of-specific-triangles에 질문을 게시했습니다. 당신 자신 같은 사람이 도울 수 있기를 희망하면서 BTW, 당신이 제공 한 첫 번째 링크 "이 대답"은 실제로 동일한 "SCNShadable 참조"에 연결됩니다. 그것은 신중한 것입니다. 또한 마지막 메모에서 _surface.color를 언급하고 나는 당신이 _surface.diffuse를 의미한다고 생각합니다. – PKCLsoft