예제 #1
0
파일: md3convert.go 프로젝트: nilium/go-md3
func surfacePosNormList(surf *md3.Surface, frame int, output chan<- surfaceStringPair) {
	buffer := new(bytes.Buffer)
	vertCount := surf.NumVertices()

	for vertIndex := 0; vertIndex < vertCount; vertIndex++ {
		posNorm := surf.Vertex(frame, vertIndex)
		if *swapYZ {
			var t float32
			t = posNorm.Origin.Y
			posNorm.Origin.Y = posNorm.Origin.Z
			posNorm.Origin.Z = t
			t = posNorm.Normal.Y
			posNorm.Normal.Y = posNorm.Normal.Z
			posNorm.Normal.Z = t
		}
		_, err := fmt.Fprintf(buffer,
			"v %f %f %f\nvn %f %f %f\n",
			posNorm.Origin.X, posNorm.Origin.Y, posNorm.Origin.Z,
			posNorm.Normal.X, posNorm.Normal.Y, posNorm.Normal.Z)
		if err != nil {
			panic(err)
		}
	}

	output <- surfaceStringPair{surf, buffer.String()}
}
예제 #2
0
파일: md3convert.go 프로젝트: nilium/go-md3
func surfaceTexCoordList(surf *md3.Surface, output chan<- surfaceStringPair) {
	buffer := new(bytes.Buffer)
	vertCount := surf.NumVertices()

	for vertIndex := 0; vertIndex < vertCount; vertIndex++ {
		texCoord := surf.TexCoord(vertIndex)

		if *flipUVs {
			texCoord.T = 1.0 - texCoord.T
		}

		_, err := fmt.Fprintf(buffer, "vt %f %f\n",
			texCoord.S, texCoord.T)
		if err != nil {
			panic(err)
		}
	}

	output <- surfaceStringPair{surf, buffer.String()}
}