He said something else, and his audience laughed as if he were Jay Leno and Eddie Murphy and Rodney Dangerfield all rolled into one. To one side of him was Paul Camilletti, in neatly pressed, faded jeans and a white button-down shirt, also with the sleeves rolled up. He'd gotten the appropriate-dress memo, even if I hadn't—I had on a pair of khaki shorts and a polo shirt.
Facing him was Jim Colvin, the COO, his sandpiper legs pasty-white under plain gray Bermuda shorts. A real fashion show this was. Goddard looked up, caught my eye, and beckoned me over.
As I started toward him, someone came out of nowhere and clutched my arm. Nora Sommers, in a pink knit shirt with the collar standing up and oversized khaki shorts, looked thrilled to see me. "Adam!" she exclaimed. "How nice to see you here! Isn't this a marvelous place?"
I nodded, smiled politely. "Is your daughter here?"
She looked suddenly uncomfortable. "Megan's going through a difficult stage, poor thing. She never wants to spend time with me." Funny, I thought, I'm going through the exact same stage. "She'd rather ride horses with her father than waste an afternoon with her mother and her mother's boring work friends."
"Have you had a chance to see Jock's car collection? It's in the garage over there." She pointed toward a barnlike building a few hundred feet across the lawn. "You have to see the cars. They're glorious!"
"I will, thanks," I said, and took a step toward Goddard's little gang.
Nora's clutch on my arm tightened. "Adam, I've been meaning to tell you, I am so happy for your success. It really says something about Jock that he was willing to take a chance on you, doesn't it? Place his confidence in you? I'm just so happy for you!" I thanked her warmly and extricated my arm from her claw.
I reached Goddard and stood politely off to one side until he saw me and waved me over. He introduced me to Stuart Lurie, the exec in charge of Enterprise Solutions, who said, "How's it going, guy?" and gave me a soul clasp. He was a very good-looking guy of around forty, prematurely bald and shaved short on the sides so it all looked sort of deliberate and cool.
"Adam's the future of Trion," Goddard said.
"Well, hey, nice to meet the future!" said Lurie with just the slightest hint of sarcasm. "You're not going to pull a coin from his ear, Jock, are you?"
"No need to," Jock said. "Adam's always pulling rabbits out of hats, right, Adam?" Goddard put his arm around my shoulder, an awkward gesture since I was so much taller than him. "Come with me," he said quietly.
He guided me toward the screened porch. "In a little while I'm going to be doing my traditional little ceremony," he said as we climbed the wooden steps. I held the screen door open for him. "I give out little gifts, silly little things—gag gifts, really." I smiled, wondering why he was telling me this.
We passed through the screened porch, with its old wicker furniture, into a mudroom and then into the main part of the house. The floors were old wide-board pine, and they squeaked as we walked over them. The walls were all painted creamy white, and everything seemed bright and cheery and homey. It had that indescribable old-house smell. Everything seemed comfortable and lived-in and real. This was the house of a rich man with no pretensions, I thought. We went down a wide hallway past a sitting room with a big stone fireplace, then turned a corner into a narrow hall with a tile floor. Trophies and stuff were on shelves on either side of the hall. Then we entered a small book-lined room with a long library table in the center, a computer and printer on it and several huge cardboard boxes. This was obviously Goddard's study.
"The old bursitis is acting up," he apologized, indicating the big cartons on the library table, which were heaped with what looked like wrapped gifts. "You're a strapping young man. If you wouldn't mind carrying these out to where the podium's set up, near the bar...."
"Not at all," I said, disappointed, but not showing it. I lifted one of the enormous boxes, which was not only heavy but unwieldy, unevenly weighted and so bulky that I could barely see in front of me as I walked.


text:
mayoreric.com
motorcycles & more
Back to the Bikes Page
© 2005-2008 mayoreric.com
1997 BMW F650 ST
The BMW F650 ST is a true European hybrid: Designed by an Englishman for a German company, with an Austrian engine and built by an Italian firm (Martin Longmore, BMW, Rotax, and Aprilia, respectively). I had been following these bikes on Craigslist and eBay for about a year, and it seemed remarkable to me how inexpensive they had become. In the midst of my sporadic observation of the marketplace for these bikes, my wife (after 15 years of marriage plus a couple more of cohabitation) decided that her militant disinterest for riding with me as a passenger had turned to a full-scale interest in coming along.
The most passenger-friendly bike in the fleet at this time was my 1990 Ducati 750 Sport. Although the seat is relatively comfortable, the riding position is moderately sporty. Also, the difficulty of finding 16" tires for the thing was developing into a major challenge. The F650 was an economical way for my wife and me to "test the waters" of two up travel. We lucked out on two fronts: first, the color of the bike is about the most pleasant one can imagine, a dark blue just lighter than navy with no trace of odious metalflaking; second, the seat had been replaced with a Corbin Gunfighter and Queen. Because it is all about her pleasure.
Since purchasing the ST, I have found it to be the best commuter bike in the fleet. Effortless shifting and neutral-finding, great visibility, plenty of grunt away from stoplights, carrying capacity in the "city-style" panniers, and lost of fun. I do not expect expect to have the F650 forever, as a true sport-tourer is probably in my future. But I have enjoyed having the bike, and I think I will miss it when it is gone.
F650.com ("The Chain Gang")
Nice essay on the F650 and its development

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Texture UV coords not lining up as expected in Unity3D I'm creating a mesh programmatically in Unity3D. Each section of the mesh is setup with 4 verts:
// 1 ----- 2
// | a  /  |
// |  /  b |
// 3 ----- 4

My UVs are:
1 = 0, 1
2 = 0.125, 1
3 = 0, 0.875
4 = 0.125, 0.875

My texture is 2048x2048. The tile is in the top left of the image and is 256x256 in size. I've updated the texture a bit with some additional tiles to better give an idea of what I'm trying to do.

Im getting white edges around each tile on the mesh.

I'm importing the image with the following settings.

The code the generate the mesh (manual normals):
IEnumerator BuildMesh (int width, int height, float tileSize) {

    float halfSize = tileSize / 2f;

    List<Vector3> vertices = new List<Vector3> ();
    List<Vector3> normals = new List<Vector3> ();
    List<Vector2> uv = new List<Vector2> ();
    List<int> triangles = new List<int> ();

    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            int tileVertIdx = vertices.Count;

            float h = map.GetHeight(startX + x, startY + y);
            float n = map.GetHeight(startX + x, startY + y - 1);
            float s = map.GetHeight(startX + x, startY + y + 1);
            float e = map.GetHeight(startX + x + 1, startY + y);
            float w = map.GetHeight(startX + x - 1, startY + y);
            float ne = map.GetHeight(startX + x + 1, startY + y - 1);
            float nw = map.GetHeight(startX + x - 1, startY + y - 1);
            float se = map.GetHeight(startX + x + 1, startY + y + 1);
            float sw = map.GetHeight(startX + x - 1, startY + y + 1);

            Vector3 tileCenter = new Vector3 (x * tileSize, h, y * tileSize);
            Rect topUV = map.GetTopUV ((int)h);

            if (n == h && s == h && e == h && w == h && ne == h && nw == h && se == h && sw == h) {
                // Each tile
                // 1 ----- 2
                // | a  /  |
                // |  /  b |
                // 3 ----- 4

                // top row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z - halfSize));

                // bottom row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z + halfSize));

                normals.Add (Vector3.up);
                normals.Add (Vector3.up);

                normals.Add (Vector3.up);
                normals.Add (Vector3.up);

                uv.Add (new Vector2(topUV.x, topUV.y));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y));

                uv.Add (new Vector2(topUV.x, topUV.y - topUV.height));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y - topUV.height));

                // a
                triangles.Add (tileVertIdx + 0);
                triangles.Add (tileVertIdx + 2);
                triangles.Add (tileVertIdx + 1);

                // b
                triangles.Add (tileVertIdx + 1);
                triangles.Add (tileVertIdx + 2);
                triangles.Add (tileVertIdx + 3);
            } else {
                // Each tile
                // 1 - 2 - 3 14 --- 16
                // |a\b|c/d\ |  k / |
                // 4 - 5 - 6 |   /  |
                // |e/f|g\h| |  / l |
                // 7 - 8 - 9 15 --- 17
                // 10 --- 11
                // | i / j |
                // 12 --- 13

                // top row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x, tileCenter.y, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z - halfSize));

                // middle row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z));
                vertices.Add (new Vector3 (tileCenter.x, tileCenter.y, tileCenter.z));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z));

                // bottom row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x, tileCenter.y, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z + halfSize));

                // bottom square
                vertices.Add (new Vector3 (tileCenter.x - halfSize, h, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, h, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x - halfSize, s, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, s, tileCenter.z + halfSize));

                // right square
                vertices.Add (new Vector3 (tileCenter.x + halfSize, h, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, h, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, e, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, e, tileCenter.z - halfSize));

                normals.Add (Vector3.up);
                normals.Add (Vector3.up);
                normals.Add (Vector3.up);

                normals.Add (Vector3.up);
                normals.Add (Vector3.up);
                normals.Add (Vector3.up);

                normals.Add (Vector3.up);
                normals.Add (Vector3.up);
                normals.Add (Vector3.up);

                normals.Add (Vector3.up);
                normals.Add (Vector3.up);
                normals.Add (Vector3.up);
                normals.Add (Vector3.up);

                normals.Add (Vector3.up);
                normals.Add (Vector3.up);
                normals.Add (Vector3.up);
                normals.Add (Vector3.up);

                uv.Add (new Vector2(topUV.x, topUV.y));
                uv.Add (new Vector2(topUV.x - (topUV.width / 2), topUV.y));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y));

                uv.Add (new Vector2(topUV.x, topUV.y - (topUV.height / 2)));
                uv.Add (new Vector2(topUV.x - (topUV.width / 2), topUV.y - (topUV.height / 2)));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y - (topUV.height / 2)));

                uv.Add (new Vector2(topUV.x, topUV.y - topUV.height));
                uv.Add (new Vector2(topUV.x - (topUV.width / 2), topUV.y - topUV.height));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y - topUV.height));

                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);

                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);

                // a
                triangles.Add (tileVertIdx + 0);
                triangles.Add (tileVertIdx + 3);
                triangles.Add (tileVertIdx + 4);

                // b
                triangles.Add (tileVertIdx + 0);
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 1);

                // c
                triangles.Add (tileVertIdx + 1);
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 2);

                // d
                triangles.Add (tileVertIdx + 2);
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 5);

                // e
                triangles.Add (tileVertIdx + 3);
                triangles.Add (tileVertIdx + 6);
                triangles.Add (tileVertIdx + 4);

                // f
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 6);
                triangles.Add (tileVertIdx + 7);

                // g
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 7);
                triangles.Add (tileVertIdx + 8);

                // h
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 8);
                triangles.Add (tileVertIdx + 5);

                // i
                triangles.Add (tileVertIdx + 9);
                triangles.Add (tileVertIdx + 11);
                triangles.Add (tileVertIdx + 10);

                // j
                triangles.Add (tileVertIdx + 10);
                triangles.Add (tileVertIdx + 11);
                triangles.Add (tileVertIdx + 12);

                // k
                triangles.Add (tileVertIdx + 13);
                triangles.Add (tileVertIdx + 15);
                triangles.Add (tileVertIdx + 14);

                // l
                triangles.Add (tileVertIdx + 15);
                triangles.Add (tileVertIdx + 16);
                triangles.Add (tileVertIdx + 14);
            }
        }
        yield return null;
    }

    Mesh mesh = _meshFilter.mesh;
    mesh.vertices = vertices.ToArray ();
    mesh.triangles = triangles.ToArray ();
    mesh.normals = normals.ToArray ();
    mesh.uv = uv.ToArray ();
//  mesh.RecalculateNormals ();
//  mesh.Optimize ();
    map.ChunkFinished ();
}

The code to generate the mesh (auto normals):
IEnumerator BuildMesh (int width, int height, float tileSize) {

    float halfSize = tileSize / 2f;

    List<Vector3> vertices = new List<Vector3> ();
    List<Vector3> normals = new List<Vector3> ();
    List<Vector2> uv = new List<Vector2> ();
    List<int> triangles = new List<int> ();

    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            int tileVertIdx = vertices.Count;

            float h = map.GetHeight(startX + x, startY + y);
            float n = map.GetHeight(startX + x, startY + y - 1);
            float s = map.GetHeight(startX + x, startY + y + 1);
            float e = map.GetHeight(startX + x + 1, startY + y);
            float w = map.GetHeight(startX + x - 1, startY + y);
            float ne = map.GetHeight(startX + x + 1, startY + y - 1);
            float nw = map.GetHeight(startX + x - 1, startY + y - 1);
            float se = map.GetHeight(startX + x + 1, startY + y + 1);
            float sw = map.GetHeight(startX + x - 1, startY + y + 1);

            Vector3 tileCenter = new Vector3 (x * tileSize, h, y * tileSize);
            Rect topUV = map.GetTopUV ((int)h);

            if (n == h && s == h && e == h && w == h && ne == h && nw == h && se == h && sw == h) {
                // Each tile
                // 1 ----- 2
                // | a  /  |
                // |  /  b |
                // 3 ----- 4

                // top row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z - halfSize));

                // bottom row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z + halfSize));

                uv.Add (new Vector2(topUV.x, topUV.y));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y));

                uv.Add (new Vector2(topUV.x, topUV.y - topUV.height));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y - topUV.height));

                // a
                triangles.Add (tileVertIdx + 0);
                triangles.Add (tileVertIdx + 2);
                triangles.Add (tileVertIdx + 1);

                // b
                triangles.Add (tileVertIdx + 1);
                triangles.Add (tileVertIdx + 2);
                triangles.Add (tileVertIdx + 3);
            } else {
                // Each tile
                // 1 - 2 - 3 14 --- 16
                // |a\b|c/d\ |  k / |
                // 4 - 5 - 6 |   /  |
                // |e/f|g\h| |  / l |
                // 7 - 8 - 9 15 --- 17
                // 10 --- 11
                // | i / j |
                // 12 --- 13

                // top row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x, tileCenter.y, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z - halfSize));

                // middle row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z));
                vertices.Add (new Vector3 (tileCenter.x, tileCenter.y, tileCenter.z));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z));

                // bottom row
                vertices.Add (new Vector3 (tileCenter.x - halfSize, tileCenter.y, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x, tileCenter.y, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, tileCenter.y, tileCenter.z + halfSize));

                // bottom square
                vertices.Add (new Vector3 (tileCenter.x - halfSize, h, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, h, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x - halfSize, s, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, s, tileCenter.z + halfSize));

                // right square
                vertices.Add (new Vector3 (tileCenter.x + halfSize, h, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, h, tileCenter.z - halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, e, tileCenter.z + halfSize));
                vertices.Add (new Vector3 (tileCenter.x + halfSize, e, tileCenter.z - halfSize));

                uv.Add (new Vector2(topUV.x, topUV.y));
                uv.Add (new Vector2(topUV.x - (topUV.width / 2), topUV.y));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y));

                uv.Add (new Vector2(topUV.x, topUV.y - (topUV.height / 2)));
                uv.Add (new Vector2(topUV.x - (topUV.width / 2), topUV.y - (topUV.height / 2)));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y - (topUV.height / 2)));

                uv.Add (new Vector2(topUV.x, topUV.y - topUV.height));
                uv.Add (new Vector2(topUV.x - (topUV.width / 2), topUV.y - topUV.height));
                uv.Add (new Vector2(topUV.x - topUV.width, topUV.y - topUV.height));

                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);

                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);
                uv.Add (Vector2.up);

                // a
                triangles.Add (tileVertIdx + 0);
                triangles.Add (tileVertIdx + 3);
                triangles.Add (tileVertIdx + 4);

                // b
                triangles.Add (tileVertIdx + 0);
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 1);

                // c
                triangles.Add (tileVertIdx + 1);
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 2);

                // d
                triangles.Add (tileVertIdx + 2);
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 5);

                // e
                triangles.Add (tileVertIdx + 3);
                triangles.Add (tileVertIdx + 6);
                triangles.Add (tileVertIdx + 4);

                // f
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 6);
                triangles.Add (tileVertIdx + 7);

                // g
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 7);
                triangles.Add (tileVertIdx + 8);

                // h
                triangles.Add (tileVertIdx + 4);
                triangles.Add (tileVertIdx + 8);
                triangles.Add (tileVertIdx + 5);

                // i
                triangles.Add (tileVertIdx + 9);
                triangles.Add (tileVertIdx + 11);
                triangles.Add (tileVertIdx + 10);

                // j
                triangles.Add (tileVertIdx + 10);
                triangles.Add (tileVertIdx + 11);
                triangles.Add (tileVertIdx + 12);

                // k
                triangles.Add (tileVertIdx + 13);
                triangles.Add (tileVertIdx + 15);
                triangles.Add (tileVertIdx + 14);

                // l
                triangles.Add (tileVertIdx + 15);
                triangles.Add (tileVertIdx + 16);
                triangles.Add (tileVertIdx + 14);
            }
        }
        yield return null;
    }

    Mesh mesh = _meshFilter.mesh;
    mesh.vertices = vertices.ToArray ();
    mesh.triangles = triangles.ToArray ();
    mesh.uv = uv.ToArray ();
    mesh.RecalculateNormals ();
    mesh.Optimize ();

    map.ChunkFinished ();
}

Both versions of the code produce the same issue.

A: Dude are your normals ok?
They should all be pointing straight up for this jobbie right?
If you're using some default normal calculation, could it be they're trying to gently wrap the edge thinking it's a cube?

A: Try setting the format to Truecolor. It might be that due to the compression the borders between the different textures are not sharp anymore but blurred, causing them to bleed into each other.

A: i have the similar problem
no filter (point) is not realy no filter
there is a nearest neighbour unity builtin filter behind no filter
for resolve your issue you must split your texture into 4 splited textures
by this way
create 4 new texture2D()
store all pixels of orginal texture into an 2D array by get pixel method
https://docs.unity3d.com/ScriptReference/Texture2D.GetPixel.html
and create 4 new texture and use
use 4 for loop to get quarter of orginal texture pixels and set the pixels to one of destination textures
https://docs.unity3d.com/ScriptReference/Texture2D.SetPixel.html
https://docs.unity3d.com/ScriptReference/Texture2D.SetPixel.html

redpajama_set_name: RedPajamaStackExchange